From b5fef66f37d3a6f8419f32177f27a01108091d48 Mon Sep 17 00:00:00 2001 From: jede Date: Tue, 31 Jan 2017 22:09:14 +0100 Subject: [PATCH] Merge telemon24 and telemon30 into telestrat target. Cleaning, and replace tab to spaces Converting hex lowercase value into uppercase char. Changing := and = when it was needed --- asminc/telemon24.inc | 68 ---- asminc/{telemon30.inc => telestrat.inc} | 103 +++-- cfg/telemon24.cfg | 43 -- cfg/{telemon30.cfg => telestrat.cfg} | 0 doc/telemon24.sgml | 42 -- doc/{telemon30.sgml => telestrat.sgml} | 0 include/telemon.h | 58 --- include/{telemon30.h => telestrat.h} | 0 libsrc/Makefile | 3 +- libsrc/telemon24/crt0.s | 101 ----- libsrc/telemon24/hires.s | 22 -- libsrc/telemon24/mainargs.s | 36 -- libsrc/telemon24/print.s | 25 -- libsrc/telemon24/tapehdr.s | 36 -- libsrc/telemon24/write.s | 59 --- libsrc/telemon30/_close.s | 17 - libsrc/telemon30/_read.s | 41 -- libsrc/telemon30/_scrsize.s | 19 - libsrc/telemon30/ch376.s | 366 ------------------ libsrc/telemon30/ctype.s | 299 -------------- libsrc/telemon30/graphics.s | 54 --- libsrc/telemon30/keyboard.s | 13 - libsrc/telemon30/oserrlist.s | 75 ---- libsrc/telemon30/oserror.s | 17 - libsrc/telemon30/print.s | 21 - libsrc/telemon30/sound.s | 45 --- libsrc/telemon30/sysuname.s | 46 --- libsrc/telestrat/ch376.s | 344 ++++++++++++++++ libsrc/telestrat/close.s | 18 + libsrc/{telemon30 => telestrat}/crt0.s | 12 +- libsrc/{telemon24 => telestrat}/ctype.s | 0 libsrc/telestrat/graphics.s | 58 +++ libsrc/telestrat/keyboard.s | 14 + libsrc/{telemon30 => telestrat}/mainargs.s | 29 +- libsrc/{telemon30 => telestrat}/mym.s | 2 +- .../{telemon30/_open.s => telestrat/open.s} | 21 +- libsrc/{telemon30 => telestrat}/orixhdr.s | 22 +- libsrc/{telemon24 => telestrat}/oserrlist.s | 0 libsrc/{telemon24 => telestrat}/oserror.s | 0 libsrc/telestrat/print.s | 16 + libsrc/telestrat/read.s | 43 ++ .../_scrsize.s => telestrat/scrsize.s} | 2 +- libsrc/telestrat/sound.s | 42 ++ libsrc/{telemon24 => telestrat}/sysuname.s | 0 libsrc/{telemon30 => telestrat}/write.s | 14 +- src/ca65/main.c | 8 +- src/cc65/main.c | 8 +- src/common/target.c | 6 +- src/common/target.h | 3 +- 49 files changed, 629 insertions(+), 1642 deletions(-) delete mode 100644 asminc/telemon24.inc rename asminc/{telemon30.inc => telestrat.inc} (69%) delete mode 100644 cfg/telemon24.cfg rename cfg/{telemon30.cfg => telestrat.cfg} (100%) delete mode 100644 doc/telemon24.sgml rename doc/{telemon30.sgml => telestrat.sgml} (100%) delete mode 100644 include/telemon.h rename include/{telemon30.h => telestrat.h} (100%) delete mode 100644 libsrc/telemon24/crt0.s delete mode 100644 libsrc/telemon24/hires.s delete mode 100644 libsrc/telemon24/mainargs.s delete mode 100644 libsrc/telemon24/print.s delete mode 100644 libsrc/telemon24/tapehdr.s delete mode 100644 libsrc/telemon24/write.s delete mode 100644 libsrc/telemon30/_close.s delete mode 100644 libsrc/telemon30/_read.s delete mode 100644 libsrc/telemon30/_scrsize.s delete mode 100644 libsrc/telemon30/ch376.s delete mode 100644 libsrc/telemon30/ctype.s delete mode 100644 libsrc/telemon30/graphics.s delete mode 100644 libsrc/telemon30/keyboard.s delete mode 100644 libsrc/telemon30/oserrlist.s delete mode 100644 libsrc/telemon30/oserror.s delete mode 100644 libsrc/telemon30/print.s delete mode 100644 libsrc/telemon30/sound.s delete mode 100644 libsrc/telemon30/sysuname.s create mode 100644 libsrc/telestrat/ch376.s create mode 100644 libsrc/telestrat/close.s rename libsrc/{telemon30 => telestrat}/crt0.s (85%) rename libsrc/{telemon24 => telestrat}/ctype.s (100%) create mode 100644 libsrc/telestrat/graphics.s create mode 100644 libsrc/telestrat/keyboard.s rename libsrc/{telemon30 => telestrat}/mainargs.s (90%) rename libsrc/{telemon30 => telestrat}/mym.s (99%) rename libsrc/{telemon30/_open.s => telestrat/open.s} (65%) rename libsrc/{telemon30 => telestrat}/orixhdr.s (56%) rename libsrc/{telemon24 => telestrat}/oserrlist.s (100%) rename libsrc/{telemon24 => telestrat}/oserror.s (100%) create mode 100644 libsrc/telestrat/print.s create mode 100644 libsrc/telestrat/read.s rename libsrc/{telemon24/_scrsize.s => telestrat/scrsize.s} (85%) create mode 100644 libsrc/telestrat/sound.s rename libsrc/{telemon24 => telestrat}/sysuname.s (100%) rename libsrc/{telemon30 => telestrat}/write.s (86%) diff --git a/asminc/telemon24.inc b/asminc/telemon24.inc deleted file mode 100644 index 0b58d63a6..000000000 --- a/asminc/telemon24.inc +++ /dev/null @@ -1,68 +0,0 @@ -; -; Oric Telemon definition -; Telemon 2.4 -; - - -; --------------------------------------------------------------------------- -; Constants - -SCREEN_XSIZE = 40 ; screen columns -SCREEN_YSIZE = 28 ; screen rows - -FUNCTKEY = $A5 - -FNAME_LEN = 11 ; maximum length of file-name - - -; --------------------------------------------------------------------------- -; Zero page - - - - -; --------------------------------------------------------------------------- -; Low memory - - - - -; --------------------------------------------------------------------------- -; I/O locations - -; 6522 -.struct VIA ; Versatile Interface Adapter - .res $0300 -PRB .byte ; Port Register B -PRA .byte ; Port Register A -DDRB .byte ; Data Direction Register B -DDRA .byte ; Data Direction Register A -T1 .word ; Timer 1 -T1L .word ; Timer 1 Latch -T2 .word ; Timer 2 -SR .byte ; Shift Register -ACR .byte ; Auxiliary Control Register -PCR .byte ; Peripheral Control Register -IFR .byte ; Interrupt Flags Register -IER .byte ; Interrupt Enable Register -PRA2 .byte ; Port Register A without handshaking -.endstruct - -; 6551 -.struct ACIA ; Asynchronous Communications Interface Adapter - .res $031C -DATA .byte -STATUS .byte -CMD .byte ; Command register -CTRL .byte ; Control register -.endstruct - -SCREEN := $BB80 - - -; --------------------------------------------------------------------------- -; ROM entries - -XWR0 := $10 -XWSTR0 := $14 - diff --git a/asminc/telemon30.inc b/asminc/telestrat.inc similarity index 69% rename from asminc/telemon30.inc rename to asminc/telestrat.inc index acfd7e919..fedda1946 100644 --- a/asminc/telemon30.inc +++ b/asminc/telestrat.inc @@ -1,6 +1,7 @@ ; ; Oric Telemon definition -; Telemon 2.4 +; Telemon 2.4 & Telemon 3.0 +; For telemon 3.0 check http://orix.oric.org ; @@ -18,6 +19,24 @@ FNAME_LEN = 11 ; maximum length of file-name ; --------------------------------------------------------------------------- ; Zero page +; --------------------------------------------------------------------------- +; Page 00 +RES := $00 +RESB := $02 + +TR0 := $0C +TR1 := $0D + +PTR_READ_DEST := $2D ; used for XFREAD and XWRITE only in telemon 3.0 + +HRSX := $46 +HRSY := $47 + +HRS1 := $4D +HRS2 := $4F +HRS3 := $51 +HRS4 := $53 +HRS5 := $55 @@ -82,69 +101,47 @@ SCREEN := $BB80 ; ROM entries ; primitives telemon 2.4 -XRD0 := $08 -XRDW0 := $0c -XWR0 := $10 -XWSTR0 := $14 -XTEXT := $19 -XHIRES := $1A -XMINMA := $1f -XFREAD := $27 ; only in TELEMON 3.0 -XOPEN := $30 ; only in TELEMON 3.0 -XCOSCR := $34 ; switch off cursor -XCSSCR := $35 ; switch on cursor -XCLOSE := $3a ; Close file -XFWRITE:= $3b ; write - -XSONPS := $40 -XOUPS := $42 -XPLAY := $43 -XSOUND := $44 -XMUSIC := $45 -XZAP := $46 -XSHOOT := $47 -XCIRCL := $8f -XCURSE := $90 -XEXPLO := $9c -XPING := $9d -XPAPER := $92 -XINK := $93 - - -; --------------------------------------------------------------------------- -; Page 00 -RES := $00 -RESB := $02 - -TR0 := $0c -TR1 := $0d - -PTR_READ_DEST := $2c ; used for XFREAD and XWRITE - -HRSX := $46 -HRSY := $47 - -HRS1 := $4D -HRS2 := $4F -HRS3 := $51 -HRS4 := $53 -HRS5 := $55 +XRD0 = $08 +XRDW0 = $0C +XWR0 = $10 +XWSTR0 = $14 +XTEXT = $19 +XHIRES = $1A +XMINMA = $1F +XFREAD = $27 ; only in TELEMON 3.0 +XOPEN = $30 ; only in TELEMON 3.0 +XCOSCR = $34 ; switch off cursor +XCSSCR = $35 ; switch on cursor +XCLOSE = $3A ; only in TELEMON 3.0 Close file +XFWRITE = $3B ; only in TELEMON 3.0 write file +XSONPS = $40 +XOUPS = $42 +XPLAY = $43 +XSOUND = $44 +XMUSIC = $45 +XZAP = $46 +XSHOOT = $47 +XCIRCL = $8F +XCURSE = $90 +XEXPLO = $9C +XPING = $9D +XPAPER = $92 +XINK = $93 ; --------------------------------------------------------------------------- ; Page $500 -BUFNOM := $517 -BUFEDT := $590 +BUFNOM := $517 +BUFEDT := $590 MAX_BUFEDT_LENGTH=110 ; Hardware -CH376_DATA :=$340 -CH376_COMMAND :=$341 +CH376_DATA :=$340 +CH376_COMMAND :=$341 ; MACRO - .macro BRK_TELEMON value .byte $00,value .endmacro diff --git a/cfg/telemon24.cfg b/cfg/telemon24.cfg deleted file mode 100644 index b76350868..000000000 --- a/cfg/telemon24.cfg +++ /dev/null @@ -1,43 +0,0 @@ -SYMBOLS { - - __ORIXHDR__: type = import; - - __STACKSIZE__: type = weak, value = $0800; # 2K stack - - __RAMEND__: type = weak, value = $9800 + $1C00 ; -} -MEMORY { - ZP: file = "", define = yes, start = $00E2, size = $001A; - ORIXHDR: file = %O, type = ro, start = $0000, size = $001F; - BASHEAD: file = %O, define = yes, start = $0801, size = $000D; - MAIN: file = %O, define = yes, start = __BASHEAD_LAST__, size = __RAMEND__ - __MAIN_START__; - BSS: file = "", start = __ONCE_RUN__, size = __RAMEND__ - __STACKSIZE__ - __ONCE_RUN__; -} -SEGMENTS { - ZEROPAGE: load = ZP, type = zp; - ORIXHDR: load = ORIXHDR, type = ro; - STARTUP: load = MAIN, type = ro; - LOWCODE: load = MAIN, type = ro, optional = yes; - CODE: load = MAIN, type = ro; - RODATA: load = MAIN, type = ro; - DATA: load = MAIN, type = rw; - INIT: load = MAIN, type = rw; - ONCE: load = MAIN, type = ro, define = yes; - BASTAIL: load = MAIN, type = ro, optional = yes; - BSS: load = BSS, type = bss, define = yes; -} -FEATURES { - CONDES: type = constructor, - label = __CONSTRUCTOR_TABLE__, - count = __CONSTRUCTOR_COUNT__, - segment = ONCE; - CONDES: type = destructor, - label = __DESTRUCTOR_TABLE__, - count = __DESTRUCTOR_COUNT__, - segment = RODATA; - CONDES: type = interruptor, - label = __INTERRUPTOR_TABLE__, - count = __INTERRUPTOR_COUNT__, - segment = RODATA, - import = __CALLIRQ__; -} diff --git a/cfg/telemon30.cfg b/cfg/telestrat.cfg similarity index 100% rename from cfg/telemon30.cfg rename to cfg/telestrat.cfg diff --git a/doc/telemon24.sgml b/doc/telemon24.sgml deleted file mode 100644 index b4e1befa1..000000000 --- a/doc/telemon24.sgml +++ /dev/null @@ -1,42 +0,0 @@ - - -
- -Oric Telemon 2.4 -specific information for cc65 -<author> - -<url url="mailto:greg.king5@verizon.net" name="Greg King"> -<date>2017-01-22 - -<abstract> -An overview over the Telemon 3.0 runtime system as it is implemented for the cc65 C -compiler. -</abstract> - -<!-- Table of contents --> -<toc> - - - -<sect>License<p> - -This software is provided 'as-is', without any expressed or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -<enum> -<item> The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. -<item> Altered source versions must be plainly marked as such, and must not - be misrepresented as being the original software. -<item> This notice may not be removed or altered from any source - distribution. -</enum> - -</article> diff --git a/doc/telemon30.sgml b/doc/telestrat.sgml similarity index 100% rename from doc/telemon30.sgml rename to doc/telestrat.sgml diff --git a/include/telemon.h b/include/telemon.h deleted file mode 100644 index 70033a9ad..000000000 --- a/include/telemon.h +++ /dev/null @@ -1,58 +0,0 @@ - -void print (char *); - -void hires(); -void text(); -void oups(); -void ping(); -void zap(); -void shoot(); -void explode(); - -void paper(char color); -void ink(char color); - -void kbdclick1(); - - - -void curset(char x,char y); -void circle(char rayon); - -char key(void); - - -/* PEEK, POKE, DEEK, DOKE */ - -#define POKE(addr,val) (*(unsigned char*) (addr) = (val)) - - -#define PCHN_1 001 -#define PCHN_2 002 -#define PCHN_12 003 -#define PCHN_3 004 -#define PCHN_13 005 -#define PCHN_23 006 -#define PCHN_123 007 - -#define ENV_DECAY 001 /* \_________ envelope */ -#define ENV_ATTACK_CUT 002 /* /_________ envelope */ -#define ENV_SAW_DOWN 003 /* \\\\\\\\\\ envelope */ -#define ENV_WAVE 004 /* /\/\/\/\/\ envelope */ -#define ENV_DECAY_CONT 005 /* \~~~~~~~~~ envelope */ -#define ENV_SAW_UP 006 /* ////////// envelope */ -#define ENV_ATTACK_CONT 007 /* /~~~~~~~~~ envelope */ - -#define VOL_ENVELOPE 0x0 -#define VOL_QUIETEST 0x1 -#define VOL_LOUDEST 0xe - -extern int play(int soundchanels,int noisechanels,int envelop,int volume); - - -/* Play a musical tone through the selected channel. */ - -#define CHAN_1 1 -#define CHAN_2 2 -#define CHAN_3 3 - diff --git a/include/telemon30.h b/include/telestrat.h similarity index 100% rename from include/telemon30.h rename to include/telestrat.h diff --git a/libsrc/Makefile b/libsrc/Makefile index 0342a8ca4..8bcbe4410 100644 --- a/libsrc/Makefile +++ b/libsrc/Makefile @@ -31,8 +31,7 @@ TARGETS = apple2 \ sim6502 \ sim65c02 \ supervision\ - telemon24\ - telemon30 + telestrat DRVTYPES = emd \ joy \ diff --git a/libsrc/telemon24/crt0.s b/libsrc/telemon24/crt0.s deleted file mode 100644 index a3c92a360..000000000 --- a/libsrc/telemon24/crt0.s +++ /dev/null @@ -1,101 +0,0 @@ -; -; Startup code for cc65 (Oric version) -; -; By Debrune Jérôme <jede@oric.org> and Ullrich von Bassewitz <uz@cc65.org> -; 2016-03-18, Greg King -; - - .export _exit - .export __STARTUP__ : absolute = 1 ; Mark as startup - - .import initlib, donelib - .import callmain, zerobss - .import __MAIN_START__, __MAIN_SIZE__ - - .include "zeropage.inc" - .include "telemon24.inc" - -; ------------------------------------------------------------------------ -; Place the startup code in a special segment. - -.segment "STARTUP" - - tsx - stx spsave ; Save system stk ptr - -; Save space by putting some of the start-up code in a segment -; that will be re-used. - - jsr init - -; Clear the BSS variables (after the constructors have been run). - - jsr zerobss - -; Push the command-line arguments; and, call main(). - - jsr callmain - -; Call the module destructors. This is also the exit() entry. - -_exit: jsr donelib - -; Restore the system stuff. - - ldx spsave - txs -; lda stsave - ; sta STATUS - -; Copy back the zero-page stuff. - - ldx #zpspace - 1 -L2: lda zpsave,x - sta sp,x - dex - bpl L2 - -; Back to BASIC. - - rts - -; ------------------------------------------------------------------------ -; Put this code in a place that will be re-used by BSS, the heap, -; and the C stack. - -.segment "ONCE" - -; Save the zero-page area that we're about to use. - -init: ldx #zpspace - 1 -L1: lda sp,x - sta zpsave,x - dex - bpl L1 - -; Currently, color isn't supported on the text screen. -; Unprotect screen columns 0 and 1 (where each line's color codes would sit). - - ; lda STATUS - ; sta stsave - ; and #%11011111 - ; sta STATUS - -; Set up the C stack. - - lda #<(__MAIN_START__ + __MAIN_SIZE__) - ldx #>(__MAIN_START__ + __MAIN_SIZE__) - sta sp - stx sp+1 ; Set argument stack ptr - -; Call the module constructors. - - jmp initlib - -; ------------------------------------------------------------------------ - -.segment "INIT" - -spsave: .res 1 -stsave: .res 1 -zpsave: .res zpspace diff --git a/libsrc/telemon24/hires.s b/libsrc/telemon24/hires.s deleted file mode 100644 index 80d67824c..000000000 --- a/libsrc/telemon24/hires.s +++ /dev/null @@ -1,22 +0,0 @@ -; -; Ullrich von Bassewitz, 2003-04-13 -; -; void hires(void); -; -; This function is a hack! -; - - .export _hires - - - .include "telemon24.inc" - - -; can be optimized with a macro -.proc _hires - brk - .byt $1a - rts -.endproc - - diff --git a/libsrc/telemon24/mainargs.s b/libsrc/telemon24/mainargs.s deleted file mode 100644 index d8547e500..000000000 --- a/libsrc/telemon24/mainargs.s +++ /dev/null @@ -1,36 +0,0 @@ -; -; 2003-03-07, Ullrich von Bassewitz -; 2011-01-28, Stefan Haubenthal -; 2014-09-10, Greg King -; -; Set up arguments for main -; - - .constructor initmainargs, 24 - .import __argc, __argv - - .include "telemon24.inc" - .macpack generic - -MAXARGS = 10 ; Maximum number of arguments allowed - - -.segment "ONCE" - -.proc initmainargs - -.endproc - -.segment "INIT" - -term: .res 1 -name: .res FNAME_LEN + 1 -args: .res SCREEN_XSIZE * 2 - 1 - -.data - -; This array has zeroes when initmainargs starts. -; char* argv[MAXARGS+1]={name}; - -argv: .addr name - .res MAXARGS * 2 diff --git a/libsrc/telemon24/print.s b/libsrc/telemon24/print.s deleted file mode 100644 index a135cdd18..000000000 --- a/libsrc/telemon24/print.s +++ /dev/null @@ -1,25 +0,0 @@ -; -; Jede -; -; print (char * str); -; -; This function is a hack! -; - - .export _print - .import popax - .importzp tmp1 - .include "telemon24.inc" - -.proc _print - - jsr popax ; get buf - stx tmp1 - ldy tmp1 - brk - .byte $14 - rts - -.endproc - - diff --git a/libsrc/telemon24/tapehdr.s b/libsrc/telemon24/tapehdr.s deleted file mode 100644 index 9b183e11e..000000000 --- a/libsrc/telemon24/tapehdr.s +++ /dev/null @@ -1,36 +0,0 @@ -; -; Based on code by Debrune Jérôme <jede@oric.org> -; 2016-03-17, Greg King -; - - ; The following symbol is used by the linker config. file - ; to force this module to be included into the output file. - .export __ORIXHDR__:abs = 1 - - ; These symbols, also, come from the configuration file. - .import __AUTORUN__, __PROGFLAG__ - .import __BASHEAD_START__, __MAIN_LAST__ - - -; ------------------------------------------------------------------------ -; Oric cassette-tape header - -.segment "ORIXHDR" - - .byte $01, $00 ; - - .byte "ORI" - - .byte $01 ; version - .byte $00,$00 ; mode - .byte $00,$00 ; cpu type - .byte $00,$00 ; OS - - .byte $00 ; reserved - .byte $00 ; auto - - - .dbyt __BASHEAD_START__ ; Address of start of file - .dbyt __MAIN_LAST__ - 1 ; Address of end of file - .dbyt __BASHEAD_START__ ; Address of start of file - diff --git a/libsrc/telemon24/write.s b/libsrc/telemon24/write.s deleted file mode 100644 index 32bbf617c..000000000 --- a/libsrc/telemon24/write.s +++ /dev/null @@ -1,59 +0,0 @@ -; -; Ullrich von Bassewitz, 2003-04-13 -; -; int write (int fd, const void* buf, int count); -; -; This function is a hack! -; - - .export _write - .import popax - .importzp ptr1, ptr2, ptr3, tmp1 - - .include "telemon24.inc" - -.proc _write - - sta ptr3 - stx ptr3+1 ; save count as result - - eor #$FF - sta ptr2 - txa - eor #$FF - sta ptr2+1 ; Remember -count-1 - - jsr popax ; get buf - sta ptr1 - stx ptr1+1 - jsr popax ; get fd and discard -L1: inc ptr2 - bne L2 - inc ptr2+1 - beq L9 -L2: ldy #0 - lda (ptr1),y - tax - cpx #$0A ; Check for \n - bne L3 - brk - .byt $10 - - ldx #$0D -L3: - brk - .byt $10 - inc ptr1 - bne L1 - inc ptr1+1 - jmp L1 - -; No error, return count - -L9: lda ptr3 - ldx ptr3+1 - rts - -.endproc - - diff --git a/libsrc/telemon30/_close.s b/libsrc/telemon30/_close.s deleted file mode 100644 index 84bee3a1b..000000000 --- a/libsrc/telemon30/_close.s +++ /dev/null @@ -1,17 +0,0 @@ - .export _close - .import addysp,popax - .importzp sp,tmp2,tmp3,tmp1 - - ; int open (const char* name, int flags, ...); /* May take a mode argument */ - .include "telemon30.inc" - .include "errno.inc" - .include "fcntl.inc" - -.proc _close -; Throw away any additional parameters passed through the ellipsis - - BRK_TELEMON XCLOSE ; launch primitive ROM - rts -.endproc - - \ No newline at end of file diff --git a/libsrc/telemon30/_read.s b/libsrc/telemon30/_read.s deleted file mode 100644 index ee822f1fd..000000000 --- a/libsrc/telemon30/_read.s +++ /dev/null @@ -1,41 +0,0 @@ -; -; jede jede@oric.org 2017-01-22 -; - - - .FEATURE c_comments,labels_without_colons,pc_assignment, loose_char_term - .export _read - .import popax - - .include "zeropage.inc" - .include "telemon30.inc" -; int read (int fd, void* buf, unsigned count); - -.proc _read - sta ptr1 ; count - stx ptr1+1 ; count - jsr popax ; get buf - - sta PTR_READ_DEST - stx PTR_READ_DEST+1 - sta ptr2 ; in order to calculate nb of bytes read - stx ptr2+1 ; - - ; jsr popax ; fp pointer don't care in this version - - lda ptr1 ; - ldy ptr1+1 ; - BRK_TELEMON XFREAD ; calls telemon30 routine - ; compute nb of bytes read - lda PTR_READ_DEST+1 - sec - sbc ptr2+1 - tax - lda PTR_READ_DEST - sec - sbc ptr2 - ; Here A and X contains number of bytes read - rts -.endproc - - diff --git a/libsrc/telemon30/_scrsize.s b/libsrc/telemon30/_scrsize.s deleted file mode 100644 index a929f97b1..000000000 --- a/libsrc/telemon30/_scrsize.s +++ /dev/null @@ -1,19 +0,0 @@ -; -; 2003-04-13, Ullrich von Bassewitz -; 2013-07-16, Greg King -; -; Screen size variables -; - - .export screensize - .include "telemon30.inc" - -.proc screensize - - ldx #SCREEN_XSIZE - ldy #SCREEN_YSIZE - rts - -.endproc - - diff --git a/libsrc/telemon30/ch376.s b/libsrc/telemon30/ch376.s deleted file mode 100644 index 460a70052..000000000 --- a/libsrc/telemon30/ch376.s +++ /dev/null @@ -1,366 +0,0 @@ - - ; For XA65 compatibily in the future - .FEATURE c_comments,labels_without_colons,pc_assignment, loose_char_term - .export _ch376_set_file_name - .export _ch376_file_open - .export _ch376_ic_get_version - .export _ch376_reset - .export _ch376_check_exist - .export _ch376_disk_mount - .export _ch376_set_usb_mode - - .export _ch376_file_close - .export _ch376_seek_file - .export _ch376_file_create - .export _ch376_fwrite - ; High level function - - - .import popax - .include "zeropage.inc" - .include "telemon30.inc" -/* - -*/ -; CODE FOR CH376_SET_USB_MODE ************************************************* - -CH376_SET_USB_MODE_CODE_USB_HOST_SOF_PACKAGE_AUTOMATICALLY := $06 - -CH376_USB_INT_SUCCESS := $14 -CH376_USB_INT_CONNECT := $15 -CH376_USB_INT_DISCONNECT := $16 -CH376_USB_INT_BUF_OVER := $17 -CH376_USB_INT_USB_READY := $18 -CH376_USB_INT_DISK_READ := $1D -CH376_USB_INT_DISK_WRITE := $1E -CH376_USB_INT_DISK_ERR := $1F - - -CH376_ERR_OPEN_DIR := $41 -CH376_ERR_MISS_FILE := $42 -CH376_ERR_FOUND_NAME := $43 -CH376_ERR_DISK_DISCON := $82 -CH376_ERR_LARGE_SECTOR := $84 -CH376_ERR_TYPE_ERROR := $92 -CH376_ERR_BPB_ERROR := $A1 -CH376_ERR_DISK_FULL := $B1 -CH376_ERR_FDT_OVER := $B2 -CH376_ERR_FILE_CLOSE := $B4 - - - -CH376_GET_IC_VER := $01 -CH376_SET_BAUDRATE := $02 -CH376_GET_ENTER_SLEEP := $03 -CH376_RESET_ALL := $05 -CH376_CHECK_EXIST := $06 -CH376_GET_FILE_SIZE := $0C - -CH376_SET_USB_MODE := $15 -CH376_GET_STATUS := $22 -CH376_RD_USB_DATA0 := $27 -CH376_CMD_WR_REQ_DATA := $2d -CH376_SET_FILE_NAME := $2F - -CH376_DISK_CONNECT := $30 ; check the disk connection status -CH376_DISK_MOUNT := $31 -CH376_FILE_OPEN := $32 -CH376_FILE_ENUM_GO := $33 -CH376_FILE_CREATE := $34 -CH376_FILE_CLOSE := $36 -CH376_BYTE_LOCATE := $39 -CH376_BYTE_READ := $3A -CH376_BYTE_RD_GO := $3B -CH376_BYTE_WRITE := $3C -CH376_BYTE_WR_GO := $3D -CH376_DISK_CAPACITY := $3E -CH376_DISK_RD_GO := $55 - -.proc _ch376_file_close - lda #CH376_FILE_CLOSE - sta CH376_COMMAND - jsr _ch376_wait_response - rts -.endproc - -.proc _ch376_seek_file - ldx #CH376_BYTE_LOCATE - stx CH376_COMMAND - sta CH376_DATA - sty CH376_DATA - lda #$00 ; Don't manage 32 bits length - sta CH376_DATA - sta CH376_DATA - jsr _ch376_wait_response - rts -.endproc - -; void ch376_set_file_name(char *filename) -.proc _ch376_set_file_name - sta ptr1 - stx ptr1+1 - lda #CH376_SET_FILE_NAME ;$2f - sta CH376_COMMAND - ldy #0 -loop: - lda (ptr1),y ; replace by bufnom - beq end ; we reached 0 value - BRK_TELEMON XMINMA - sta CH376_DATA - iny - cpy #13 ; because we don't manage longfilename shortname =11 - bne loop -end: - sta CH376_DATA - rts -.endproc - -; char _ch376_file_open(); - -.proc _ch376_file_open - lda #CH376_FILE_OPEN ; $32 - sta CH376_COMMAND - jsr _ch376_wait_response - rts -.endproc - - - -.proc _ch376_get_file_size - lda #CH376_GET_FILE_SIZE - sta CH376_COMMAND - lda #$68 - sta CH376_DATA - ; store file length 32 bits - lda CH376_DATA - sta tmp1 - lda CH376_DATA - sta tmp1+1 - lda CH376_DATA - sta tmp2 - lda CH376_DATA - sta tmp2+1 - rts -.endproc - -; void ch376_reset(); - -.proc _ch376_reset - lda #CH376_RESET_ALL ; 5 - sta CH376_COMMAND - ; waiting - ldy #0 - ldx #0 -loop: - nop - inx - bne loop - iny - bne loop - rts -.endproc - -; char ch376_check_exist(char value); - -.proc _ch376_check_exist - sta tmp1 - lda #CH376_CHECK_EXIST ; - sta CH376_COMMAND - lda tmp1 - sta CH376_DATA - lda CH376_DATA - rts -.endproc - -; char ch376_ic_get_version(void) -.proc _ch376_ic_get_version - lda #CH376_GET_IC_VER - sta CH376_COMMAND - ldx #0 - lda CH376_DATA - rts -.endproc - -; void ch376_set_usb_mode(char mode) - -.proc _ch376_set_usb_mode -; CH376_SET_USB_MODE_CODE_USB_HOST_SOF_PACKAGE_AUTOMATICALLY - ldx #CH376_SET_USB_MODE ; $15 - stx CH376_COMMAND - sta CH376_DATA - rts -.endproc - -; void ch376_set_bytes_write(int value); -.proc _ch376_set_bytes_write - ldy #CH376_BYTE_WRITE - sty CH376_COMMAND - sta CH376_DATA - stx CH376_DATA - lda #0 - sta CH376_DATA - sta CH376_DATA - jsr _ch376_wait_response - rts -.endproc - -.proc _ch376_set_bytes_read - ldy #CH376_BYTE_READ - sty CH376_COMMAND - ; Storing 32 bits value - sta CH376_DATA - stx CH376_DATA - lda #0 - sta CH376_DATA - sta CH376_DATA - jsr _ch376_wait_response - rts -.endproc - -; char ch376_disk_mount(); -.proc _ch376_disk_mount - lda #CH376_DISK_MOUNT ; $31 - sta CH376_COMMAND - jsr _ch376_wait_response - ; if we read data value, we have then length of the volume name - ldx #0 - rts -.endproc - - -; char ch376_wait_response(); -.proc _ch376_wait_response -; 1 return 1 if usb controller does not respond -; else A contains answer of the controller - ldy #$ff -loop3: - ldx #$ff ; don't decrease this counter. Because ch376 won't respond if there is a lower value -loop: - lda CH376_COMMAND - and #%10000000 - cmp #128 - bne no_error - dex - bne loop - dey - bne loop3 - ; error is here - rts -no_error: - lda #CH376_GET_STATUS - sta CH376_COMMAND - lda CH376_DATA - rts -.endproc - -.proc _ch376_fread - ; use ptr1 to count bytes - jsr _ch376_set_bytes_read - -continue: - cmp #CH376_USB_INT_DISK_READ ; something to read - beq we_read - cmp #CH376_USB_INT_SUCCESS ; finished - beq finished - ; TODO in A : $ff X: $ff - lda #0 - tax - rts -we_read: - lda #CH376_RD_USB_DATA0 - sta CH376_COMMAND - - lda CH376_DATA ; contains length read - sta tmp2; Number of bytes to read - - ldy #0 -loop: - lda CH376_DATA ; read the data - sta (PTR_READ_DEST),y - - iny - cpy tmp2 - bne loop - tya - clc - adc PTR_READ_DEST - bcc next - inc PTR_READ_DEST+1 -next: - sta PTR_READ_DEST - - lda #CH376_BYTE_RD_GO - sta CH376_COMMAND - jsr _ch376_wait_response - jmp continue -finished: - ; TODO return bytes read - lda tmp1 - ldx tmp1+1 - rts -.endproc - -; void _ch376_fwrite(void *ptr,int number) -.proc _ch376_fwrite - ; use ptr1 to count bytes - sta ptr2 - stx ptr2+1 - - jsr popax - sta PTR_READ_DEST - stx PTR_READ_DEST+1 - - lda ptr2 - ldx ptr2+1 - jsr _ch376_set_bytes_write - ;cmp #CH376_USB_INT_SUCCESS - ;beq finished - ;jsr popax - - ;jsr _ch376_wait_response - -continue: - cmp #CH376_USB_INT_DISK_WRITE ; something to read - beq we_read - cmp #CH376_USB_INT_SUCCESS ; finished - beq finished - ; TODO in A : $ff X: $ff - lda #0 - tax - rts -we_read: - lda #CH376_CMD_WR_REQ_DATA - sta CH376_COMMAND - - lda CH376_DATA ; contains length read - sta tmp2; Number of bytes to read - - - ;ldy #0 -loop: - ;lda (PTR_READ_DEST),y - lda #65 - sta CH376_DATA ; read the data - dec tmp2 - bne loop - - - lda #CH376_BYTE_WR_GO - sta CH376_COMMAND - jsr _ch376_wait_response - jmp continue -finished: - ; TODO return bytes read - lda tmp1 - ;lda #<8000 - ldx tmp1+1 - ;ldx #>8000 - rts -.endproc - -.proc _ch376_file_create - lda #CH376_FILE_CREATE - sta CH376_COMMAND - jsr _ch376_wait_response - rts -.endproc \ No newline at end of file diff --git a/libsrc/telemon30/ctype.s b/libsrc/telemon30/ctype.s deleted file mode 100644 index 79edafbb2..000000000 --- a/libsrc/telemon30/ctype.s +++ /dev/null @@ -1,299 +0,0 @@ -; -; Ullrich von Bassewitz, 2003-04-13 -; -; Character specification table. -; - -; The tables are readonly, put them into the rodata segment - -.rodata - -; The following 256 byte wide table specifies attributes for the isxxx type -; of functions. Doing it by a table means some overhead in space, but it -; has major advantages: -; -; * It is fast. If it were'nt for the slow parameter passing of cc65, one -; could even define macros for the isxxx functions (this is usually -; done on other platforms). -; -; * It is highly portable. The only unportable part is the table itself, -; all real code goes into the common library. -; -; * We save some code in the isxxx functions. -; -; -; Bit assignments: -; -; 0 - Lower case char -; 1 - Upper case char -; 2 - Numeric digit -; 3 - Hex digit (both, lower and upper) -; 4 - Control character -; 5 - The space character itself -; 6 - Other whitespace (that is: '\f', '\n', '\r', '\t' and '\v') -; 7 - Space or tab character - - .export __ctype - -__ctype: - .byte $10 ; 0/00 ___ctrl_@___ - .byte $10 ; 1/01 ___ctrl_A___ - .byte $10 ; 2/02 ___ctrl_B___ - .byte $10 ; 3/03 ___ctrl_C___ - .byte $10 ; 4/04 ___ctrl_D___ - .byte $10 ; 5/05 ___ctrl_E___ - .byte $10 ; 6/06 ___ctrl_F___ - .byte $10 ; 7/07 ___ctrl_G___ - .byte $10 ; 8/08 ___ctrl_H___ - .byte $D0 ; 9/09 ___ctrl_I___ - .byte $50 ; 10/0a ___ctrl_J___ - .byte $50 ; 11/0b ___ctrl_K___ - .byte $50 ; 12/0c ___ctrl_L___ - .byte $50 ; 13/0d ___ctrl_M___ - .byte $10 ; 14/0e ___ctrl_N___ - .byte $10 ; 15/0f ___ctrl_O___ - .byte $10 ; 16/10 ___ctrl_P___ - .byte $10 ; 17/11 ___ctrl_Q___ - .byte $10 ; 18/12 ___ctrl_R___ - .byte $10 ; 19/13 ___ctrl_S___ - .byte $10 ; 20/14 ___ctrl_T___ - .byte $10 ; 21/15 ___ctrl_U___ - .byte $10 ; 22/16 ___ctrl_V___ - .byte $10 ; 23/17 ___ctrl_W___ - .byte $10 ; 24/18 ___ctrl_X___ - .byte $10 ; 25/19 ___ctrl_Y___ - .byte $10 ; 26/1a ___ctrl_Z___ - .byte $10 ; 27/1b ___ctrl_[___ - .byte $10 ; 28/1c ___ctrl_\___ - .byte $10 ; 29/1d ___ctrl_]___ - .byte $10 ; 30/1e ___ctrl_^___ - .byte $10 ; 31/1f ___ctrl_____ - .byte $A0 ; 32/20 ___SPACE___ - .byte $00 ; 33/21 _____!_____ - .byte $00 ; 34/22 _____"_____ - .byte $00 ; 35/23 _____#_____ - .byte $00 ; 36/24 _____$_____ - .byte $00 ; 37/25 _____%_____ - .byte $00 ; 38/26 _____&_____ - .byte $00 ; 39/27 _____'_____ - .byte $00 ; 40/28 _____(_____ - .byte $00 ; 41/29 _____)_____ - .byte $00 ; 42/2a _____*_____ - .byte $00 ; 43/2b _____+_____ - .byte $00 ; 44/2c _____,_____ - .byte $00 ; 45/2d _____-_____ - .byte $00 ; 46/2e _____._____ - .byte $00 ; 47/2f _____/_____ - .byte $0C ; 48/30 _____0_____ - .byte $0C ; 49/31 _____1_____ - .byte $0C ; 50/32 _____2_____ - .byte $0C ; 51/33 _____3_____ - .byte $0C ; 52/34 _____4_____ - .byte $0C ; 53/35 _____5_____ - .byte $0C ; 54/36 _____6_____ - .byte $0C ; 55/37 _____7_____ - .byte $0C ; 56/38 _____8_____ - .byte $0C ; 57/39 _____9_____ - .byte $00 ; 58/3a _____:_____ - .byte $00 ; 59/3b _____;_____ - .byte $00 ; 60/3c _____<_____ - .byte $00 ; 61/3d _____=_____ - .byte $00 ; 62/3e _____>_____ - .byte $00 ; 63/3f _____?_____ - - .byte $00 ; 64/40 _____@_____ - .byte $0A ; 65/41 _____A_____ - .byte $0A ; 66/42 _____B_____ - .byte $0A ; 67/43 _____C_____ - .byte $0A ; 68/44 _____D_____ - .byte $0A ; 69/45 _____E_____ - .byte $0A ; 70/46 _____F_____ - .byte $02 ; 71/47 _____G_____ - .byte $02 ; 72/48 _____H_____ - .byte $02 ; 73/49 _____I_____ - .byte $02 ; 74/4a _____J_____ - .byte $02 ; 75/4b _____K_____ - .byte $02 ; 76/4c _____L_____ - .byte $02 ; 77/4d _____M_____ - .byte $02 ; 78/4e _____N_____ - .byte $02 ; 79/4f _____O_____ - .byte $02 ; 80/50 _____P_____ - .byte $02 ; 81/51 _____Q_____ - .byte $02 ; 82/52 _____R_____ - .byte $02 ; 83/53 _____S_____ - .byte $02 ; 84/54 _____T_____ - .byte $02 ; 85/55 _____U_____ - .byte $02 ; 86/56 _____V_____ - .byte $02 ; 87/57 _____W_____ - .byte $02 ; 88/58 _____X_____ - .byte $02 ; 89/59 _____Y_____ - .byte $02 ; 90/5a _____Z_____ - .byte $00 ; 91/5b _____[_____ - .byte $00 ; 92/5c _____\_____ - .byte $00 ; 93/5d _____]_____ - .byte $00 ; 94/5e _____^_____ - .byte $00 ; 95/5f _UNDERLINE_ - .byte $00 ; 96/60 ___grave___ - .byte $09 ; 97/61 _____a_____ - .byte $09 ; 98/62 _____b_____ - .byte $09 ; 99/63 _____c_____ - .byte $09 ; 100/64 _____d_____ - .byte $09 ; 101/65 _____e_____ - .byte $09 ; 102/66 _____f_____ - .byte $01 ; 103/67 _____g_____ - .byte $01 ; 104/68 _____h_____ - .byte $01 ; 105/69 _____i_____ - .byte $01 ; 106/6a _____j_____ - .byte $01 ; 107/6b _____k_____ - .byte $01 ; 108/6c _____l_____ - .byte $01 ; 109/6d _____m_____ - .byte $01 ; 110/6e _____n_____ - .byte $01 ; 111/6f _____o_____ - .byte $01 ; 112/70 _____p_____ - .byte $01 ; 113/71 _____q_____ - .byte $01 ; 114/72 _____r_____ - .byte $01 ; 115/73 _____s_____ - .byte $01 ; 116/74 _____t_____ - .byte $01 ; 117/75 _____u_____ - .byte $01 ; 118/76 _____v_____ - .byte $01 ; 119/77 _____w_____ - .byte $01 ; 120/78 _____x_____ - .byte $01 ; 121/79 _____y_____ - .byte $01 ; 122/7a _____z_____ - .byte $00 ; 123/7b _____{_____ - .byte $00 ; 124/7c _____|_____ - .byte $00 ; 125/7d _____}_____ - .byte $00 ; 126/7e _____~_____ - .byte $40 ; 127/7f ____DEL____ - - .byte $00 ; 128/80 ___________ - .byte $00 ; 129/81 ___________ - .byte $00 ; 130/82 ___________ - .byte $00 ; 131/83 ___________ - .byte $00 ; 132/84 ___________ - .byte $00 ; 133/85 ___________ - .byte $00 ; 134/86 ___________ - .byte $00 ; 135/87 ___________ - .byte $00 ; 136/88 ___________ - .byte $00 ; 137/89 ___________ - .byte $00 ; 138/8a ___________ - .byte $00 ; 139/8b ___________ - .byte $00 ; 140/8c ___________ - .byte $00 ; 141/8d ___________ - .byte $00 ; 142/8e ___________ - .byte $00 ; 143/8f ___________ - .byte $00 ; 144/90 ___________ - .byte $00 ; 145/91 ___________ - .byte $00 ; 146/92 ___________ - .byte $10 ; 147/93 ___________ - .byte $00 ; 148/94 ___________ - .byte $00 ; 149/95 ___________ - .byte $00 ; 150/96 ___________ - .byte $00 ; 151/97 ___________ - .byte $00 ; 152/98 ___________ - .byte $00 ; 153/99 ___________ - .byte $00 ; 154/9a ___________ - .byte $00 ; 155/9b ___________ - .byte $00 ; 156/9c ___________ - .byte $00 ; 157/9d ___________ - .byte $00 ; 158/9e ___________ - .byte $00 ; 159/9f ___________ - - .byte $00 ; 160/a0 ___________ - .byte $00 ; 161/a1 ___________ - .byte $00 ; 162/a2 ___________ - .byte $00 ; 163/a3 ___________ - .byte $00 ; 164/a4 ___________ - .byte $00 ; 165/a5 ___________ - .byte $00 ; 166/a6 ___________ - .byte $00 ; 167/a7 ___________ - .byte $00 ; 168/a8 ___________ - .byte $00 ; 169/a9 ___________ - .byte $00 ; 170/aa ___________ - .byte $00 ; 171/ab ___________ - .byte $00 ; 172/ac ___________ - .byte $00 ; 173/ad ___________ - .byte $00 ; 174/ae ___________ - .byte $00 ; 175/af ___________ - .byte $00 ; 176/b0 ___________ - .byte $00 ; 177/b1 ___________ - .byte $00 ; 178/b2 ___________ - .byte $00 ; 179/b3 ___________ - .byte $00 ; 180/b4 ___________ - .byte $00 ; 181/b5 ___________ - .byte $00 ; 182/b6 ___________ - .byte $00 ; 183/b7 ___________ - .byte $00 ; 184/b8 ___________ - .byte $00 ; 185/b9 ___________ - .byte $00 ; 186/ba ___________ - .byte $00 ; 187/bb ___________ - .byte $00 ; 188/bc ___________ - .byte $00 ; 189/bd ___________ - .byte $00 ; 190/be ___________ - .byte $00 ; 191/bf ___________ - - .byte $02 ; 192/c0 ___________ - .byte $02 ; 193/c1 ___________ - .byte $02 ; 194/c2 ___________ - .byte $02 ; 195/c3 ___________ - .byte $02 ; 196/c4 ___________ - .byte $02 ; 197/c5 ___________ - .byte $02 ; 198/c6 ___________ - .byte $02 ; 199/c7 ___________ - .byte $02 ; 200/c8 ___________ - .byte $02 ; 201/c9 ___________ - .byte $02 ; 202/ca ___________ - .byte $02 ; 203/cb ___________ - .byte $02 ; 204/cc ___________ - .byte $02 ; 205/cd ___________ - .byte $02 ; 206/ce ___________ - .byte $02 ; 207/cf ___________ - .byte $02 ; 208/d0 ___________ - .byte $02 ; 209/d1 ___________ - .byte $02 ; 210/d2 ___________ - .byte $02 ; 211/d3 ___________ - .byte $02 ; 212/d4 ___________ - .byte $02 ; 213/d5 ___________ - .byte $02 ; 214/d6 ___________ - .byte $02 ; 215/d7 ___________ - .byte $02 ; 216/d8 ___________ - .byte $02 ; 217/d9 ___________ - .byte $02 ; 218/da ___________ - .byte $02 ; 219/db ___________ - .byte $02 ; 220/dc ___________ - .byte $02 ; 221/dd ___________ - .byte $02 ; 222/de ___________ - .byte $00 ; 223/df ___________ - .byte $01 ; 224/e0 ___________ - .byte $01 ; 225/e1 ___________ - .byte $01 ; 226/e2 ___________ - .byte $01 ; 227/e3 ___________ - .byte $01 ; 228/e4 ___________ - .byte $01 ; 229/e5 ___________ - .byte $01 ; 230/e6 ___________ - .byte $01 ; 231/e7 ___________ - .byte $01 ; 232/e8 ___________ - .byte $01 ; 233/e9 ___________ - .byte $01 ; 234/ea ___________ - .byte $01 ; 235/eb ___________ - .byte $01 ; 236/ec ___________ - .byte $01 ; 237/ed ___________ - .byte $01 ; 238/ee ___________ - .byte $01 ; 239/ef ___________ - .byte $01 ; 240/f0 ___________ - .byte $01 ; 241/f1 ___________ - .byte $01 ; 242/f2 ___________ - .byte $01 ; 243/f3 ___________ - .byte $01 ; 244/f4 ___________ - .byte $01 ; 245/f5 ___________ - .byte $01 ; 246/f6 ___________ - .byte $01 ; 247/f7 ___________ - .byte $01 ; 248/f8 ___________ - .byte $01 ; 249/f9 ___________ - .byte $01 ; 250/fa ___________ - .byte $01 ; 251/fb ___________ - .byte $01 ; 252/fc ___________ - .byte $01 ; 253/fd ___________ - .byte $01 ; 254/fe ___________ - .byte $00 ; 255/ff ___________ - diff --git a/libsrc/telemon30/graphics.s b/libsrc/telemon30/graphics.s deleted file mode 100644 index 4f2b09162..000000000 --- a/libsrc/telemon30/graphics.s +++ /dev/null @@ -1,54 +0,0 @@ - .export _paper,_hires,_text,_circle,_curset, _switchOffCursor - .importzp sp,tmp2,tmp3,tmp1 - .import popa - .include "telemon30.inc" - -.proc _paper - ldx #0 ; First window - ; A contains the paper - BRK_TELEMON XPAPER - rts -.endproc - -; XINK is bugged, it corrupt memory : removing from export -.proc _ink - ldx #0 ; First window - ; A contains the ink - BRK_TELEMON XINK - rts -.endproc - -; can be optimized with a macro -.proc _hires - BRK_TELEMON XHIRES - rts -.endproc - -.proc _text - BRK_TELEMON XTEXT - rts -.endproc - -.proc _curset - jsr popa ; Pixel - jsr popa - sta HRSX - jsr popa - sta HRSY - BRK_TELEMON XCURSE - rts -.endproc - -.proc _circle - sta HRS1 - BRK_TELEMON XCIRCL - rts -.endproc - -.proc _switchOffCursor - ldx #0 - BRK_TELEMON XCOSCR - rts -.endproc - - diff --git a/libsrc/telemon30/keyboard.s b/libsrc/telemon30/keyboard.s deleted file mode 100644 index 974f841e6..000000000 --- a/libsrc/telemon30/keyboard.s +++ /dev/null @@ -1,13 +0,0 @@ - .export _key - .importzp sp,tmp2,tmp3,tmp1 - - .include "telemon30.inc" - - -; char key(void); - -.proc _key - BRK_TELEMON XRDW0 ; read keyboard - rts -.endproc - diff --git a/libsrc/telemon30/oserrlist.s b/libsrc/telemon30/oserrlist.s deleted file mode 100644 index 8ec41de6d..000000000 --- a/libsrc/telemon30/oserrlist.s +++ /dev/null @@ -1,75 +0,0 @@ -; -; Stefan Haubenthal, 2004-05-25 -; Ullrich von Bassewitz, 18.07.2002 -; -; Defines the platform specific error list. -; -; The table is built as a list of entries -; -; .byte entrylen -; .byte errorcode -; .asciiz errormsg -; -; and terminated by an entry with length zero that is returned if the -; error code could not be found. -; - - .export __sys_oserrlist - -;---------------------------------------------------------------------------- -; Macros used to generate the list (may get moved to an include file?) - -; Regular entry -.macro sys_oserr_entry code, msg - .local Start, End -Start: .byte End - Start - .byte code - .asciiz msg -End: -.endmacro - -; Sentinel entry -.macro sys_oserr_sentinel msg - .byte 0 ; Length is always zero - .byte 0 ; Code is unused - .asciiz msg -.endmacro - -;---------------------------------------------------------------------------- -; The error message table - -.rodata - -__sys_oserrlist: - sys_oserr_entry 1, "File not found" - sys_oserr_entry 2, "Invalid command end" - sys_oserr_entry 3, "No drive number" - sys_oserr_entry 4, "Bad drive number" - sys_oserr_entry 5, "Invalid filename" - sys_oserr_entry 6, "fderr=(error number)" - sys_oserr_entry 7, "Illegal attribute" - sys_oserr_entry 8, "Wildcard(s) not allowed" - sys_oserr_entry 9, "File already exists" - sys_oserr_entry 10, "Insufficient disc space" - sys_oserr_entry 11, "File open" - sys_oserr_entry 12, "Illegal quantity" - sys_oserr_entry 13, "End address missing" - sys_oserr_entry 14, "Start address > end address" - sys_oserr_entry 15, "Missing 'to'" - sys_oserr_entry 16, "Renamed file not on same disc" - sys_oserr_entry 17, "Unknown array" - sys_oserr_entry 18, "Target drive not source drive" - sys_oserr_entry 19, "Destination not specified" - sys_oserr_entry 20, "Cannot merge and overwrite" - sys_oserr_entry 21, "Single target file illegal" - sys_oserr_entry 22, "Syntax" - sys_oserr_entry 23, "Filename missing" - sys_oserr_entry 24, "Source file missing" - sys_oserr_entry 25, "Type mismatch" - sys_oserr_entry 26, "Disc write-protected" - sys_oserr_entry 27, "Incompatible drives" - sys_oserr_entry 28, "File not open" - sys_oserr_entry 29, "File end" - sys_oserr_sentinel "Unknown error" - - diff --git a/libsrc/telemon30/oserror.s b/libsrc/telemon30/oserror.s deleted file mode 100644 index 37c9bd7fc..000000000 --- a/libsrc/telemon30/oserror.s +++ /dev/null @@ -1,17 +0,0 @@ -; -; Stefan Haubenthal, 2011-04-18 -; -; int __fastcall__ _osmaperrno (unsigned char oserror); -; /* Map a system specific error into a system independent code */ -; - - .include "errno.inc" - .export __osmaperrno - -.proc __osmaperrno - - lda #<EUNKNOWN - ldx #>EUNKNOWN - rts - -.endproc diff --git a/libsrc/telemon30/print.s b/libsrc/telemon30/print.s deleted file mode 100644 index 56c513fd6..000000000 --- a/libsrc/telemon30/print.s +++ /dev/null @@ -1,21 +0,0 @@ -; -; Jede -; -; print (char * str); -; -; This function is a hack! -; - - .export _print - .import popax - .importzp tmp1 - .include "telemon30.inc" - -.proc _print - stx tmp1 - ldy tmp1 - BRK_TELEMON XWSTR0 - rts -.endproc - - diff --git a/libsrc/telemon30/sound.s b/libsrc/telemon30/sound.s deleted file mode 100644 index 2df18f4a0..000000000 --- a/libsrc/telemon30/sound.s +++ /dev/null @@ -1,45 +0,0 @@ - .export _kbdclick1,_oups,_ping,_explode,_shoot,_zap - .include "telemon30.inc" - -.proc _kbdclick1 - LDX #<sound_bip_keyboard - LDY #>sound_bip_keyboard - BRK_TELEMON XSONPS - rts -sound_bip_keyboard: - .byte $1f,$00,$00,$00,$00,$00,$00,$3e,$10,$00,$00,$1f,$00,$00 -.endproc - -.proc _explode - BRK_TELEMON XEXPLO - rts -.endproc - -.proc _oups - BRK_TELEMON XOUPS - rts -.endproc - -.proc _ping - BRK_TELEMON XPING - rts -.endproc - -.proc _shoot - BRK_TELEMON XSHOOT - rts -.endproc - -.proc _zap - BRK_TELEMON XZAP - rts -.endproc - - - -; XPLAY := $43 -; XSOUND := $44 -; XMUSIC := $45 - - - diff --git a/libsrc/telemon30/sysuname.s b/libsrc/telemon30/sysuname.s deleted file mode 100644 index 51af1d8fe..000000000 --- a/libsrc/telemon30/sysuname.s +++ /dev/null @@ -1,46 +0,0 @@ -; -; Ullrich von Bassewitz, 2003-08-12 -; -; unsigned char __fastcall__ _sysuname (struct utsname* buf); -; - - .export __sysuname, utsdata - - .import utscopy - - __sysuname = utscopy - -;-------------------------------------------------------------------------- -; Data. We define a fixed utsname struct here and just copy it. - -.rodata - -utsdata: - ; sysname - .asciiz "cc65" - - ; nodename - .asciiz "" - - ; release - .byte ((.VERSION >> 8) & $0F) + '0' - .byte '.' - .if ((.VERSION >> 4) & $0F) > 9 - .byte ((.VERSION >> 4) & $0F) / 10 + '0' - .byte ((.VERSION >> 4) & $0F) .MOD 10 + '0' - .else - .byte ((.VERSION >> 4) & $0F) + '0' - .endif - .byte $00 - - ; version - .if (.VERSION & $0F) > 9 - .byte (.VERSION & $0F) / 10 + '0' - .byte (.VERSION & $0F) .MOD 10 + '0' - .else - .byte (.VERSION & $0F) + '0' - .endif - .byte $00 - - ; machine - .asciiz "Oric Telestrat" diff --git a/libsrc/telestrat/ch376.s b/libsrc/telestrat/ch376.s new file mode 100644 index 000000000..fbfa16017 --- /dev/null +++ b/libsrc/telestrat/ch376.s @@ -0,0 +1,344 @@ + +; jede jede@oric.org 2017-01-22 + + ; For XA65 compatibily in the future + .FEATURE c_comments,labels_without_colons,pc_assignment, loose_char_term + .export _ch376_set_file_name + .export _ch376_file_open + .export _ch376_ic_get_version + .export _ch376_reset + .export _ch376_check_exist + .export _ch376_disk_mount + .export _ch376_set_usb_mode + .export _ch376_file_close + .export _ch376_seek_file + .export _ch376_file_create + .export _ch376_fwrite + + .import popax + .include "zeropage.inc" + .include "telestrat.inc" + + + + + +CH376_SET_USB_MODE_CODE_USB_HOST_SOF_PACKAGE_AUTOMATICALLY = $06 + +CH376_USB_INT_SUCCESS = $14 +CH376_USB_INT_CONNECT = $15 +CH376_USB_INT_DISCONNECT = $16 +CH376_USB_INT_BUF_OVER = $17 +CH376_USB_INT_USB_READY = $18 +CH376_USB_INT_DISK_READ = $1D +CH376_USB_INT_DISK_WRITE = $1E +CH376_USB_INT_DISK_ERR = $1F + + +CH376_ERR_OPEN_DIR = $41 +CH376_ERR_MISS_FILE = $42 +CH376_ERR_FOUND_NAME = $43 +CH376_ERR_DISK_DISCON = $82 +CH376_ERR_LARGE_SECTOR = $84 +CH376_ERR_TYPE_ERROR = $92 +CH376_ERR_BPB_ERROR = $A1 +CH376_ERR_DISK_FULL = $B1 +CH376_ERR_FDT_OVER = $B2 +CH376_ERR_FILE_CLOSE = $B4 + +CH376_GET_IC_VER = $01 +CH376_SET_BAUDRATE = $02 +CH376_GET_ENTER_SLEEP = $03 +CH376_RESET_ALL = $05 +CH376_CHECK_EXIST = $06 +CH376_GET_FILE_SIZE = $0C + +CH376_SET_USB_MODE = $15 +CH376_GET_STATUS = $22 +CH376_RD_USB_DATA0 = $27 +CH376_CMD_WR_REQ_DATA = $2D +CH376_SET_FILE_NAME = $2F + +CH376_DISK_CONNECT = $30 ; check the disk connection status +CH376_DISK_MOUNT = $31 +CH376_FILE_OPEN = $32 +CH376_FILE_ENUM_GO = $33 +CH376_FILE_CREATE = $34 +CH376_FILE_CLOSE = $36 +CH376_BYTE_LOCATE = $39 +CH376_BYTE_READ = $3A +CH376_BYTE_RD_GO = $3B +CH376_BYTE_WRITE = $3C +CH376_BYTE_WR_GO = $3D +CH376_DISK_CAPACITY = $3E +CH376_DISK_RD_GO = $55 + +.proc _ch376_file_close + lda #CH376_FILE_CLOSE + sta CH376_COMMAND + jsr _ch376_wait_response + rts +.endproc + +.proc _ch376_seek_file + ldx #CH376_BYTE_LOCATE + stx CH376_COMMAND + sta CH376_DATA + sty CH376_DATA + lda #$00 ; Don't manage 32 bits length + sta CH376_DATA + sta CH376_DATA + jsr _ch376_wait_response + rts +.endproc + +; void ch376_set_file_name(char *filename) +.proc _ch376_set_file_name + sta ptr1 + stx ptr1+1 + lda #CH376_SET_FILE_NAME ;$2f + sta CH376_COMMAND + ldy #0 +loop: + lda (ptr1),y ; replace by bufnom + beq end ; we reached 0 value + BRK_TELEMON XMINMA + sta CH376_DATA + iny + cpy #13 ; because we don't manage longfilename shortname =11 + bne loop +end: + sta CH376_DATA + rts +.endproc + +; char _ch376_file_open(); +.proc _ch376_file_open + lda #CH376_FILE_OPEN ; $32 + sta CH376_COMMAND + jsr _ch376_wait_response + rts +.endproc + +.proc _ch376_get_file_size + lda #CH376_GET_FILE_SIZE + sta CH376_COMMAND + lda #$68 + sta CH376_DATA + ; store file length 32 bits + lda CH376_DATA + sta tmp1 + lda CH376_DATA + sta tmp1+1 + lda CH376_DATA + sta tmp2 + lda CH376_DATA + sta tmp2+1 + rts +.endproc + +; void ch376_reset(); +.proc _ch376_reset + lda #CH376_RESET_ALL ; 5 + sta CH376_COMMAND + ; waiting + ldy #0 + ldx #0 +loop: + nop + inx + bne loop + iny + bne loop + rts +.endproc + +; char ch376_check_exist(char value); + +.proc _ch376_check_exist + sta tmp1 + lda #CH376_CHECK_EXIST ; + sta CH376_COMMAND + lda tmp1 + sta CH376_DATA + lda CH376_DATA + rts +.endproc + +; char ch376_ic_get_version(void) +.proc _ch376_ic_get_version + lda #CH376_GET_IC_VER + sta CH376_COMMAND + ldx #0 + lda CH376_DATA + rts +.endproc + +; void ch376_set_usb_mode(char mode) +.proc _ch376_set_usb_mode + ldx #CH376_SET_USB_MODE ; $15 + stx CH376_COMMAND + sta CH376_DATA + rts +.endproc + +; void ch376_set_bytes_write(int value); +.proc _ch376_set_bytes_write + ldy #CH376_BYTE_WRITE + sty CH376_COMMAND + sta CH376_DATA + stx CH376_DATA + lda #0 + sta CH376_DATA + sta CH376_DATA + jsr _ch376_wait_response + rts +.endproc + +.proc _ch376_set_bytes_read + ldy #CH376_BYTE_READ + sty CH376_COMMAND + ; Storing 32 bits value + sta CH376_DATA + stx CH376_DATA + lda #0 + sta CH376_DATA + sta CH376_DATA + jsr _ch376_wait_response + rts +.endproc + +; char ch376_disk_mount(); +.proc _ch376_disk_mount + lda #CH376_DISK_MOUNT ; $31 + sta CH376_COMMAND + jsr _ch376_wait_response + ; if we read data value, we have then length of the volume name + ldx #0 + rts +.endproc + + +; char ch376_wait_response(); +.proc _ch376_wait_response +; return 1 if usb controller does not respond +; else A contains answer of the controller + ldy #$FF ; We have to wait 35 ms, but well, this loop is broken when controler is OK +loop3: + ldx #$FF ; don't decrease this counter. Because ch376 won't respond if there is a lower value +loop: + lda CH376_COMMAND + and #%10000000 + cmp #128 + bne no_error + dex + bne loop + dey + bne loop3 + ; error is here + rts +no_error: + lda #CH376_GET_STATUS + sta CH376_COMMAND + lda CH376_DATA + rts +.endproc + +.proc _ch376_fread + ; use ptr1 to count bytes + jsr _ch376_set_bytes_read +continue: + cmp #CH376_USB_INT_DISK_READ ; something to read + beq we_read + cmp #CH376_USB_INT_SUCCESS ; finished + beq finished + ; TODO in A : $ff X: $ff + lda #0 + tax + rts +we_read: + lda #CH376_RD_USB_DATA0 + sta CH376_COMMAND + + lda CH376_DATA ; contains length read + sta tmp2; Number of bytes to read + + ldy #0 +loop: + lda CH376_DATA ; read the data + sta (PTR_READ_DEST),y + iny + cpy tmp2 + bne loop + tya + clc + adc PTR_READ_DEST + bcc next + inc PTR_READ_DEST+1 +next: + sta PTR_READ_DEST + + lda #CH376_BYTE_RD_GO + sta CH376_COMMAND + jsr _ch376_wait_response + jmp continue +finished: + ; TODO return bytes read + lda tmp1 + ldx tmp1+1 + rts +.endproc + +; void _ch376_fwrite(void *ptr,int number) +.proc _ch376_fwrite + ; use ptr1 to count bytes + sta ptr2 + stx ptr2+1 + + jsr popax + sta PTR_READ_DEST + stx PTR_READ_DEST+1 + + lda ptr2 + ldx ptr2+1 + jsr _ch376_set_bytes_write +continue: + cmp #CH376_USB_INT_DISK_WRITE ; something to read + beq we_read + cmp #CH376_USB_INT_SUCCESS ; finished + beq finished + + lda #0 + tax + rts +we_read: + lda #CH376_CMD_WR_REQ_DATA + sta CH376_COMMAND + + lda CH376_DATA ; contains length read + sta tmp2; Number of bytes to read + + ldy #0 +loop: + lda (PTR_READ_DEST),y + sta CH376_DATA ; read the data + dec tmp2 + bne loop + + + lda #CH376_BYTE_WR_GO + sta CH376_COMMAND + jsr _ch376_wait_response + jmp continue +finished: + lda tmp1 + ldx tmp1+1 + rts +.endproc + +.proc _ch376_file_create + lda #CH376_FILE_CREATE + sta CH376_COMMAND + jsr _ch376_wait_response + rts +.endproc diff --git a/libsrc/telestrat/close.s b/libsrc/telestrat/close.s new file mode 100644 index 000000000..881d0897f --- /dev/null +++ b/libsrc/telestrat/close.s @@ -0,0 +1,18 @@ +; jede jede@oric.org 2017-01-22 + + .export _close + + .import addysp,popax + + .include "zeropage.inc" + .include "telestrat.inc" + .include "errno.inc" + .include "fcntl.inc" + +; int open (const char* name, int flags, ...); /* May take a mode argument */ +.proc _close + BRK_TELEMON XCLOSE ; launch primitive ROM + rts +.endproc + + \ No newline at end of file diff --git a/libsrc/telemon30/crt0.s b/libsrc/telestrat/crt0.s similarity index 85% rename from libsrc/telemon30/crt0.s rename to libsrc/telestrat/crt0.s index 72bad5f24..59b1ea642 100644 --- a/libsrc/telemon30/crt0.s +++ b/libsrc/telestrat/crt0.s @@ -2,7 +2,6 @@ ; Startup code for cc65 (Oric version) ; ; By Debrune Jérôme <jede@oric.org> and Ullrich von Bassewitz <uz@cc65.org> -; 2016-03-18, Greg King ; .export _exit @@ -13,7 +12,7 @@ .import __MAIN_START__, __MAIN_SIZE__ .include "zeropage.inc" - .include "telemon30.inc" + .include "telestrat.inc" ; ------------------------------------------------------------------------ ; Place the startup code in a special segment. @@ -44,8 +43,6 @@ _exit: jsr donelib ldx spsave txs -; lda stsave - ; sta STATUS ; Copy back the zero-page stuff. @@ -73,13 +70,6 @@ L1: lda sp,x dex bpl L1 -; Currently, color isn't supported on the text screen. -; Unprotect screen columns 0 and 1 (where each line's color codes would sit). - - ; lda STATUS - ; sta stsave - ; and #%11011111 - ; sta STATUS ; Set up the C stack. diff --git a/libsrc/telemon24/ctype.s b/libsrc/telestrat/ctype.s similarity index 100% rename from libsrc/telemon24/ctype.s rename to libsrc/telestrat/ctype.s diff --git a/libsrc/telestrat/graphics.s b/libsrc/telestrat/graphics.s new file mode 100644 index 000000000..9984036bb --- /dev/null +++ b/libsrc/telestrat/graphics.s @@ -0,0 +1,58 @@ +; jede jede@oric.org 2017-01-22 + + .export _paper,_hires,_text,_circle,_curset, _switchOffCursor + + .include "zeropage.inc" + .include "telestrat.inc" + .import popa + + +.proc _paper + ldx #0 ; First window + ; A contains the paper + BRK_TELEMON XPAPER + rts +.endproc + +; XINK is bugged, it corrupt memory : removing from export +.proc _ink + ldx #0 ; First window + ; A contains the ink + BRK_TELEMON XINK + rts +.endproc + +; can be optimized with a macro +.proc _hires + BRK_TELEMON XHIRES + rts +.endproc + +.proc _text + BRK_TELEMON XTEXT + rts +.endproc + +.proc _curset + jsr popa ; Pixel + jsr popa + sta HRSX + jsr popa + sta HRSY + BRK_TELEMON XCURSE + rts +.endproc + +.proc _circle + sta HRS1 + BRK_TELEMON XCIRCL + rts +.endproc + +.proc _switchOffCursor + ldx #0 + BRK_TELEMON XCOSCR + rts +.endproc + + diff --git a/libsrc/telestrat/keyboard.s b/libsrc/telestrat/keyboard.s new file mode 100644 index 000000000..7069d1003 --- /dev/null +++ b/libsrc/telestrat/keyboard.s @@ -0,0 +1,14 @@ +; jede jede@oric.org 2017-01-22 + + .export _key + + .include "zeropage.inc" + .include "telestrat.inc" + +; char key(void); + +.proc _key + BRK_TELEMON XRDW0 ; read keyboard + rts +.endproc + diff --git a/libsrc/telemon30/mainargs.s b/libsrc/telestrat/mainargs.s similarity index 90% rename from libsrc/telemon30/mainargs.s rename to libsrc/telestrat/mainargs.s index 452d0d6d6..b41e2a96d 100644 --- a/libsrc/telemon30/mainargs.s +++ b/libsrc/telestrat/mainargs.s @@ -9,7 +9,7 @@ .constructor initmainargs, 24 .import __argc, __argv .import ptr1 - .include "telemon30.inc" + .include "telestrat.inc" .macpack generic MAXARGS = 10 ; Maximum number of arguments allowed @@ -23,8 +23,6 @@ MAXARGS = 10 ; Maximum number of arguments allowed initmainargs: ldx #0 ; Limit the length - ; lda #0 ; The terminating NUL character - ; beq L1 ; Branch always L0: lda BUFEDT,x beq L3 cmp #' ' @@ -40,9 +38,6 @@ L3: sta name,x inc __argc ; argc always is equal to, at least, 1 - - - ldy #1 * 2 ; Point to second argv slot @@ -52,31 +47,24 @@ next: lda BUFEDT,x cmp #' ' ; Skip leading spaces beq next - - - - found: cmp #'"' ; Is the argument quoted? beq setterm ; Jump if so dex ; Reset pointer to first argument character - - + lda #' ' ; A space ends the argument setterm:sta term ; Set end of argument marker ; Now, store a pointer, to the argument, into the next slot. txa ; Get low byte - clc - adc #<BUFEDT - bcc L4 + clc + adc #<BUFEDT + bcc L4 inc L5+1 -L4: - ;add #<args +L4: sta argv,y ; argv[y]=&arg L5: lda #>BUFEDT - ;adc #>args sta argv+1,y iny iny @@ -106,8 +94,6 @@ argloop:lda BUFEDT,x cmp #MAXARGS ; Maximum number of arguments reached? bcc next ; Parse next one if not - - done: lda #<argv ldx #>argv @@ -116,7 +102,6 @@ done: lda #<argv rts - .segment "INIT" term: .res 1 @@ -127,8 +112,6 @@ term: .res 1 name: .res FNAME_LEN + 1 args: .res SCREEN_XSIZE * 2 - 1 -ptr_current: - .res 2 param_found: .res 1 ; char* argv[MAXARGS+1]={name}; diff --git a/libsrc/telemon30/mym.s b/libsrc/telestrat/mym.s similarity index 99% rename from libsrc/telemon30/mym.s rename to libsrc/telestrat/mym.s index f387f9d64..009ccf53b 100644 --- a/libsrc/telemon30/mym.s +++ b/libsrc/telestrat/mym.s @@ -1,7 +1,7 @@ .export _Mym_MusicStart .importzp sp,tmp2,tmp3,tmp1,ptr1 - .include "telemon30.inc" + .include "telestrat.inc" ; To check: AYC ; http://cpcwiki.eu/index.php/AYC diff --git a/libsrc/telemon30/_open.s b/libsrc/telestrat/open.s similarity index 65% rename from libsrc/telemon30/_open.s rename to libsrc/telestrat/open.s index 7ea2d8310..9455855da 100644 --- a/libsrc/telemon30/_open.s +++ b/libsrc/telestrat/open.s @@ -1,12 +1,13 @@ .export _open - .import addysp,popax - .importzp sp,tmp2,tmp3,tmp1 + .import addysp,popax + .importzp sp,tmp2,tmp3,tmp1 - ; int open (const char* name, int flags, ...); /* May take a mode argument */ - .include "telemon30.inc" - .include "errno.inc" - .include "fcntl.inc" - + + .include "telestrat.inc" + .include "errno.inc" + .include "fcntl.inc" + +; int open (const char* name, int flags, ...); /* May take a mode argument */ .proc _open ; Throw away any additional parameters passed through the ellipsis @@ -24,9 +25,9 @@ parmok: jsr popax ; Get flagss ; Get the filename from stack and parse it. Bail out if is not ok jsr popax ; Get name - ldy tmp3 ; Get flags again - BRK_TELEMON XOPEN ; launch primitive ROM - rts + ldy tmp3 ; Get flags again + BRK_TELEMON XOPEN ; launch primitive ROM + rts .endproc \ No newline at end of file diff --git a/libsrc/telemon30/orixhdr.s b/libsrc/telestrat/orixhdr.s similarity index 56% rename from libsrc/telemon30/orixhdr.s rename to libsrc/telestrat/orixhdr.s index 1b0351885..c2a65d9fa 100644 --- a/libsrc/telemon30/orixhdr.s +++ b/libsrc/telestrat/orixhdr.s @@ -1,6 +1,6 @@ ; -; Based on code by Debrune Jérôme <jede@oric.org> -; 2016-03-17, Greg King +; By Debrune Jérôme <jede@oric.org> + ; ; The following symbol is used by the linker config. file @@ -13,23 +13,23 @@ ; ------------------------------------------------------------------------ -; Oric cassette-tape header +; Orix header see http://orix.oric.org/doku.php?id=orix:header for specs .segment "ORIXHDR" .byte $01, $00 ; - .byte "ori" + .byte "ori" - .byte $01 ; version - .byte $00,%00000000 ; 6502 only - .byte $00,$00 ; Extends - .byte $00,$00 ; OS + .byte $01 ; version + .byte $00,%00000000 ; 6502 only + .byte $00,$00 ; Extends + .byte $00,$00 ; OS .byte $00 ; reserved .byte $00 ; auto - .word __BASHEAD_START__ ; Address of start of file - .word __MAIN_LAST__ - 1 ; Address of end of file - .word __BASHEAD_START__ ; Address of start of file + .word __BASHEAD_START__ ; Address of start of file + .word __MAIN_LAST__ - 1 ; Address of end of file + .word __BASHEAD_START__ ; Address of start of file diff --git a/libsrc/telemon24/oserrlist.s b/libsrc/telestrat/oserrlist.s similarity index 100% rename from libsrc/telemon24/oserrlist.s rename to libsrc/telestrat/oserrlist.s diff --git a/libsrc/telemon24/oserror.s b/libsrc/telestrat/oserror.s similarity index 100% rename from libsrc/telemon24/oserror.s rename to libsrc/telestrat/oserror.s diff --git a/libsrc/telestrat/print.s b/libsrc/telestrat/print.s new file mode 100644 index 000000000..9942e3ad9 --- /dev/null +++ b/libsrc/telestrat/print.s @@ -0,0 +1,16 @@ +; jede jede@oric.org 2017-01-22 + +; void print (char * str); + .export _print + .import popax + .importzp tmp1 + .include "telestrat.inc" + +.proc _print + stx tmp1 + ldy tmp1 + BRK_TELEMON XWSTR0 + rts +.endproc + + diff --git a/libsrc/telestrat/read.s b/libsrc/telestrat/read.s new file mode 100644 index 000000000..4bccbfc48 --- /dev/null +++ b/libsrc/telestrat/read.s @@ -0,0 +1,43 @@ +; +; jede jede@oric.org 2017-01-22 +; + + + .FEATURE c_comments,labels_without_colons,pc_assignment, loose_char_term + .export _read + + .import popax + + .include "zeropage.inc" + .include "telestrat.inc" + +; int read (int fd, void* buf, unsigned count); + +.proc _read + sta ptr1 ; count + stx ptr1+1 ; count + jsr popax ; get buf + + sta PTR_READ_DEST + stx PTR_READ_DEST+1 + sta ptr2 ; in order to calculate nb of bytes read + stx ptr2+1 ; + + ; jsr popax ; fp pointer don't care in this version + + lda ptr1 ; + ldy ptr1+1 ; + BRK_TELEMON XFREAD ; calls telemon30 routine + ; compute nb of bytes read + lda PTR_READ_DEST+1 + sec + sbc ptr2+1 + tax + lda PTR_READ_DEST + sec + sbc ptr2 + ; Here A and X contains number of bytes read + rts +.endproc + + diff --git a/libsrc/telemon24/_scrsize.s b/libsrc/telestrat/scrsize.s similarity index 85% rename from libsrc/telemon24/_scrsize.s rename to libsrc/telestrat/scrsize.s index 305e41c46..75bd456ce 100644 --- a/libsrc/telemon24/_scrsize.s +++ b/libsrc/telestrat/scrsize.s @@ -6,7 +6,7 @@ ; .export screensize - .include "telemon24.inc" + .include "telestrat.inc" .proc screensize diff --git a/libsrc/telestrat/sound.s b/libsrc/telestrat/sound.s new file mode 100644 index 000000000..3718debd4 --- /dev/null +++ b/libsrc/telestrat/sound.s @@ -0,0 +1,42 @@ +; +; jede jede@oric.org 2017-01-22 + + .export _kbdclick1,_oups,_ping,_explode,_shoot,_zap + .include "telestrat.inc" + +.proc _kbdclick1 + ldx #<sound_bip_keyboard + ldy #>sound_bip_keyboard + BRK_TELEMON XSONPS + rts +sound_bip_keyboard: + .byte $1f,$00,$00,$00,$00,$00,$00,$3e,$10,$00,$00,$1f,$00,$00 +.endproc + +.proc _explode + BRK_TELEMON XEXPLO + rts +.endproc + +.proc _oups + BRK_TELEMON XOUPS + rts +.endproc + +.proc _ping + BRK_TELEMON XPING + rts +.endproc + +.proc _shoot + BRK_TELEMON XSHOOT + rts +.endproc + +.proc _zap + BRK_TELEMON XZAP + rts +.endproc + + + diff --git a/libsrc/telemon24/sysuname.s b/libsrc/telestrat/sysuname.s similarity index 100% rename from libsrc/telemon24/sysuname.s rename to libsrc/telestrat/sysuname.s diff --git a/libsrc/telemon30/write.s b/libsrc/telestrat/write.s similarity index 86% rename from libsrc/telemon30/write.s rename to libsrc/telestrat/write.s index d762eb92c..1c0190531 100644 --- a/libsrc/telemon30/write.s +++ b/libsrc/telestrat/write.s @@ -1,17 +1,13 @@ ; -; Ullrich von Bassewitz, 2003-04-13 -; -; int write (int fd, const void* buf, int count); -; -; This function is a hack! -; +; jede jede@oric.org 2017-01-22 .export _write .import popax .importzp ptr1, ptr2, ptr3, tmp1 - .include "telemon30.inc" + .include "telestrat.inc" +; int write (int fd, const void* buf, int count); .proc _write sta ptr3 @@ -58,8 +54,8 @@ L2: ldy #0 tax cpx #$0A ; Check for \n bne L3 - BRK_TELEMON XWR0 ; Macro - lda #$0d ; return to the beggining of the line + BRK_TELEMON XWR0 ; Macro send char to screen (channel 0 in telemon terms) + lda #$0D ; return to the beggining of the line BRK_TELEMON XWR0 ; Macro ; diff --git a/src/ca65/main.c b/src/ca65/main.c index 1e0c5996f..471afbbe8 100644 --- a/src/ca65/main.c +++ b/src/ca65/main.c @@ -291,12 +291,8 @@ static void SetSys (const char* Sys) NewSymbol ("__ATMOS__", 1); break; - case TGT_TELEMON24: - NewSymbol ("__TELEMON24__", 1); - break; - - case TGT_TELEMON30: - NewSymbol ("__TELEMON30__", 1); + case TGT_TELESTRAT: + NewSymbol ("__TELESTRAT__", 1); break; case TGT_NES: diff --git a/src/cc65/main.c b/src/cc65/main.c index b0c9261fe..872f66aff 100644 --- a/src/cc65/main.c +++ b/src/cc65/main.c @@ -243,14 +243,10 @@ static void SetSys (const char* Sys) DefineNumericMacro ("__ATMOS__", 1); break; - case TGT_TELEMON24: - DefineNumericMacro ("__TELEMON24__", 1); + case TGT_TELESTRAT: + DefineNumericMacro ("__TELESTRAT__", 1); break; - case TGT_TELEMON30: - DefineNumericMacro ("__TELEMON30__", 1); - break; - case TGT_NES: DefineNumericMacro ("__NES__", 1); break; diff --git a/src/common/target.c b/src/common/target.c index 67e4ad51b..219afc809 100644 --- a/src/common/target.c +++ b/src/common/target.c @@ -171,8 +171,7 @@ static const TargetEntry TargetMap[] = { { "sim6502", TGT_SIM6502 }, { "sim65c02", TGT_SIM65C02 }, { "supervision", TGT_SUPERVISION }, - { "telemon24", TGT_TELEMON24 }, - { "telemon30", TGT_TELEMON30 }, + { "telestrat", TGT_TELESTRAT }, { "vic20", TGT_VIC20 }, }; #define MAP_ENTRY_COUNT (sizeof (TargetMap) / sizeof (TargetMap[0])) @@ -201,8 +200,7 @@ static const TargetProperties PropertyTable[TGT_COUNT] = { { "geos-apple", CPU_65C02, BINFMT_BINARY, CTNone }, { "lunix", CPU_6502, BINFMT_O65, CTNone }, { "atmos", CPU_6502, BINFMT_BINARY, CTNone }, - { "telemon24", CPU_6502, BINFMT_BINARY, CTNone }, - { "telemon30", CPU_6502, BINFMT_BINARY, CTNone }, + { "telestrat", CPU_6502, BINFMT_BINARY, CTNone }, { "nes", CPU_6502, BINFMT_BINARY, CTNone }, { "supervision", CPU_65SC02, BINFMT_BINARY, CTNone }, { "lynx", CPU_65SC02, BINFMT_BINARY, CTNone }, diff --git a/src/common/target.h b/src/common/target.h index 68c0953fe..7409505bf 100644 --- a/src/common/target.h +++ b/src/common/target.h @@ -73,8 +73,7 @@ typedef enum { TGT_GEOS_APPLE, TGT_LUNIX, TGT_ATMOS, - TGT_TELEMON24, - TGT_TELEMON30, + TGT_TELESTRAT, TGT_NES, TGT_SUPERVISION, TGT_LYNX, -- 2.39.5