]> git.sur5r.net Git - cc65/commitdiff
Merge telemon24 and telemon30 into telestrat target.
authorjede <jede@oric.org>
Tue, 31 Jan 2017 21:09:14 +0000 (22:09 +0100)
committerjede <jede@oric.org>
Tue, 31 Jan 2017 21:09:14 +0000 (22:09 +0100)
Cleaning, and replace tab to spaces
Converting hex lowercase value into uppercase char.
Changing := and = when it was needed

64 files changed:
asminc/telemon24.inc [deleted file]
asminc/telemon30.inc [deleted file]
asminc/telestrat.inc [new file with mode: 0644]
cfg/telemon24.cfg [deleted file]
cfg/telemon30.cfg [deleted file]
cfg/telestrat.cfg [new file with mode: 0644]
doc/telemon24.sgml [deleted file]
doc/telemon30.sgml [deleted file]
doc/telestrat.sgml [new file with mode: 0644]
include/telemon.h [deleted file]
include/telemon30.h [deleted file]
include/telestrat.h [new file with mode: 0644]
libsrc/Makefile
libsrc/telemon24/_scrsize.s [deleted file]
libsrc/telemon24/crt0.s [deleted file]
libsrc/telemon24/ctype.s [deleted file]
libsrc/telemon24/hires.s [deleted file]
libsrc/telemon24/mainargs.s [deleted file]
libsrc/telemon24/oserrlist.s [deleted file]
libsrc/telemon24/oserror.s [deleted file]
libsrc/telemon24/print.s [deleted file]
libsrc/telemon24/sysuname.s [deleted file]
libsrc/telemon24/tapehdr.s [deleted file]
libsrc/telemon24/write.s [deleted file]
libsrc/telemon30/_close.s [deleted file]
libsrc/telemon30/_open.s [deleted file]
libsrc/telemon30/_read.s [deleted file]
libsrc/telemon30/_scrsize.s [deleted file]
libsrc/telemon30/ch376.s [deleted file]
libsrc/telemon30/crt0.s [deleted file]
libsrc/telemon30/ctype.s [deleted file]
libsrc/telemon30/graphics.s [deleted file]
libsrc/telemon30/keyboard.s [deleted file]
libsrc/telemon30/mainargs.s [deleted file]
libsrc/telemon30/mym.s [deleted file]
libsrc/telemon30/orixhdr.s [deleted file]
libsrc/telemon30/oserrlist.s [deleted file]
libsrc/telemon30/oserror.s [deleted file]
libsrc/telemon30/print.s [deleted file]
libsrc/telemon30/sound.s [deleted file]
libsrc/telemon30/sysuname.s [deleted file]
libsrc/telemon30/write.s [deleted file]
libsrc/telestrat/ch376.s [new file with mode: 0644]
libsrc/telestrat/close.s [new file with mode: 0644]
libsrc/telestrat/crt0.s [new file with mode: 0644]
libsrc/telestrat/ctype.s [new file with mode: 0644]
libsrc/telestrat/graphics.s [new file with mode: 0644]
libsrc/telestrat/keyboard.s [new file with mode: 0644]
libsrc/telestrat/mainargs.s [new file with mode: 0644]
libsrc/telestrat/mym.s [new file with mode: 0644]
libsrc/telestrat/open.s [new file with mode: 0644]
libsrc/telestrat/orixhdr.s [new file with mode: 0644]
libsrc/telestrat/oserrlist.s [new file with mode: 0644]
libsrc/telestrat/oserror.s [new file with mode: 0644]
libsrc/telestrat/print.s [new file with mode: 0644]
libsrc/telestrat/read.s [new file with mode: 0644]
libsrc/telestrat/scrsize.s [new file with mode: 0644]
libsrc/telestrat/sound.s [new file with mode: 0644]
libsrc/telestrat/sysuname.s [new file with mode: 0644]
libsrc/telestrat/write.s [new file with mode: 0644]
src/ca65/main.c
src/cc65/main.c
src/common/target.c
src/common/target.h

diff --git a/asminc/telemon24.inc b/asminc/telemon24.inc
deleted file mode 100644 (file)
index 0b58d63..0000000
+++ /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/telemon30.inc
deleted file mode 100644 (file)
index acfd7e9..0000000
+++ /dev/null
@@ -1,150 +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
-
-
-.struct VIA2                     ; Versatile Interface Adapter
-        .res    $0320
-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
-
-; 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
-
-; ---------------------------------------------------------------------------
-; Page $500
-
-BUFNOM := $517
-BUFEDT := $590
-
-MAX_BUFEDT_LENGTH=110
-
-; Hardware
-CH376_DATA             :=$340
-CH376_COMMAND  :=$341
-
-; MACRO 
-
-
-.macro  BRK_TELEMON   value
-       .byte $00,value
-.endmacro
diff --git a/asminc/telestrat.inc b/asminc/telestrat.inc
new file mode 100644 (file)
index 0000000..fedda19
--- /dev/null
@@ -0,0 +1,147 @@
+;
+; Oric Telemon definition
+; Telemon 2.4 & Telemon 3.0
+; For telemon 3.0 check http://orix.oric.org
+;
+
+
+; ---------------------------------------------------------------------------
+; Constants
+
+SCREEN_XSIZE    = 40            ; screen columns
+SCREEN_YSIZE    = 28            ; screen rows
+
+FUNCTKEY        = $A5
+
+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
+
+
+
+; ---------------------------------------------------------------------------
+; 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
+
+
+.struct VIA2                     ; Versatile Interface Adapter
+        .res    $0320
+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
+
+; 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 ; 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
+
+MAX_BUFEDT_LENGTH=110
+
+; Hardware
+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 (file)
index b763508..0000000
+++ /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/telemon30.cfg
deleted file mode 100644 (file)
index b9f0b40..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-SYMBOLS {
-
-    __ORIXHDR__:   type = import;
-
-    __STACKSIZE__: type = weak, value = $0800; # 2K stack
-
-    __RAMEND__:    type = weak, value = $9800;
-}
-MEMORY {
-    ZP:      file = "", define = yes, start = $00E0,            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/telestrat.cfg b/cfg/telestrat.cfg
new file mode 100644 (file)
index 0000000..b9f0b40
--- /dev/null
@@ -0,0 +1,43 @@
+SYMBOLS {
+
+    __ORIXHDR__:   type = import;
+
+    __STACKSIZE__: type = weak, value = $0800; # 2K stack
+
+    __RAMEND__:    type = weak, value = $9800;
+}
+MEMORY {
+    ZP:      file = "", define = yes, start = $00E0,            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/doc/telemon24.sgml b/doc/telemon24.sgml
deleted file mode 100644 (file)
index b4e1bef..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<!doctype linuxdoc system>
-
-<article>
-
-<title>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/telemon30.sgml
deleted file mode 100644 (file)
index ce9e044..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-<!doctype linuxdoc system>
-
-<article>
-
-<title>Oric Telestrat-specific information for cc65
-<author>
-<url url="mailto:jede@oric.org" name="Jede">,<newline>
-
-<date>2017-01-22
-
-<abstract>
-An overview over the Telestrat (telemon 3.0 : http://orix.oric.org) runtime system as it is implemented for the cc65 C
-compiler.
-</abstract>
-
-<!-- Table of contents -->
-<toc>
-
-<!-- Begin the document -->
-
-<sect>Overview<p>
-
-This file contains an overview of the Telestrat runtime system as it comes with the
-cc65 C compiler. It describes the memory layout, Telemon3.0-specific header files,
-available drivers, and any pitfalls specific to that platform.
-
-Please note that Telemon3.0-specific functions are just mentioned here, they are
-described in detail in the separate <url url="funcref.html" name="function
-reference">. Even functions marked as "platform dependent" may be available on
-more than one platform. Please see the function reference for more
-information.
-
-
-
-<sect>Binary format<p>
-
-The standard binary output format generated by the linker for the Telemon 3.0 target
-is a machine language program with a 20 bytes header described here : http://orix.oric.org/doku.php?id=orix:header
-
-
-
-<sect>Memory layout<p>
-
-In the standard setup, cc65-generated programs use the memory from
-&dollar;0801 to &dollar;9800; so, nearly 37K of memory (including the stack) is
-available. ROM calls are possible without further precautions.
-
-
-
-Special locations:
-
-<descrip>
-  <tag/Stack/
-  The C runtime stack is located at &dollar;97FF (or &dollar;B3FF), and grows
-  downwards.
-
-  <tag/Heap/
-  The C heap is located at the end of the program, and grows towards the C
-  runtime stack.
-
-</descrip><p>
-
-
-
-<sect>Platform-specific header files<p>
-
-Programs containing Telemon 3.0 -specific code may use the <tt/telemon.h/ header file.
-
-
-<sect1>Telemon 3.0-specific functions<p>
-
-The functions listed below are special for the Telemon 3.0. See the <url
-url="funcref.html" name="function reference"> for declaration and usage.
-
-<itemize>
-<item>explode
-<item>ping
-<item>shoot
-<item>zap
-<item>oupsx
-</itemize>
-
-
-<sect1>Hardware access<p>
-
-The following pseudo variables declared in the <tt/atmos.h/ header file do allow
-access to hardware located in the address space. Some variables are
-structures; accessing the struct fields will access the chip registers.
-
-<descrip>
-
-  <tag><tt/VIA/</tag>
-  Access to the VIA (Versatile Interface Adapter) chip is available via the
-  <tt/VIA/ variable. The structure behind this variable is explained in <tt/_6522.h/.
-
-</descrip><p>
-
-
-
-<sect>Loadable drivers<p>
-
-<em>Note:</em> Since the Atmos doesn't have working disk I/O
-(see <ref id="limitations" name="section &quot;Limitations&quot;">), the
-available drivers cannot be loaded at runtime (so the term "loadable drivers"
-is somewhat misleading). Instead, the drivers have to be statically linked. While
-this may seem overhead, it has two advantages:
-
-
-<sect1>Extended memory drivers<p>
-
-No extended memory drivers are currently available for the Atmos.
-
-
-<sect1>Joystick drivers<p>
-
-<descrip>
-
-telemon 3.0 manages joysticks but it had been handled yet.
-
-</descrip><p>
-
-
-<sect1>Mouse drivers<p>
-
-Telemon 3.0 manages also mouse, but it had been no handled yet in this version.
-
-<sect1>RS232 device drivers<p>
-
-<descrip>
-
-not done
-
-</descrip><p>
-
-
-
-<sect>Limitations<label id="limitations"><p>
-
-<sect1>Disk I/O<p>
-
-This version handles fopen, fread, fclose primitives. Because Telemon 3.0 handles these two primitives. By the way, 
-it uses an extension "ch376 card" which handles sdcard and FAT 32 usb key.
-
-<itemize>
-<item>fclose
-<item>fopen
-<item>fread
-
-</itemize>
-
-
-
-<sect>Other hints<p>
-
-
-<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/telestrat.sgml b/doc/telestrat.sgml
new file mode 100644 (file)
index 0000000..ce9e044
--- /dev/null
@@ -0,0 +1,177 @@
+<!doctype linuxdoc system>
+
+<article>
+
+<title>Oric Telestrat-specific information for cc65
+<author>
+<url url="mailto:jede@oric.org" name="Jede">,<newline>
+
+<date>2017-01-22
+
+<abstract>
+An overview over the Telestrat (telemon 3.0 : http://orix.oric.org) runtime system as it is implemented for the cc65 C
+compiler.
+</abstract>
+
+<!-- Table of contents -->
+<toc>
+
+<!-- Begin the document -->
+
+<sect>Overview<p>
+
+This file contains an overview of the Telestrat runtime system as it comes with the
+cc65 C compiler. It describes the memory layout, Telemon3.0-specific header files,
+available drivers, and any pitfalls specific to that platform.
+
+Please note that Telemon3.0-specific functions are just mentioned here, they are
+described in detail in the separate <url url="funcref.html" name="function
+reference">. Even functions marked as "platform dependent" may be available on
+more than one platform. Please see the function reference for more
+information.
+
+
+
+<sect>Binary format<p>
+
+The standard binary output format generated by the linker for the Telemon 3.0 target
+is a machine language program with a 20 bytes header described here : http://orix.oric.org/doku.php?id=orix:header
+
+
+
+<sect>Memory layout<p>
+
+In the standard setup, cc65-generated programs use the memory from
+&dollar;0801 to &dollar;9800; so, nearly 37K of memory (including the stack) is
+available. ROM calls are possible without further precautions.
+
+
+
+Special locations:
+
+<descrip>
+  <tag/Stack/
+  The C runtime stack is located at &dollar;97FF (or &dollar;B3FF), and grows
+  downwards.
+
+  <tag/Heap/
+  The C heap is located at the end of the program, and grows towards the C
+  runtime stack.
+
+</descrip><p>
+
+
+
+<sect>Platform-specific header files<p>
+
+Programs containing Telemon 3.0 -specific code may use the <tt/telemon.h/ header file.
+
+
+<sect1>Telemon 3.0-specific functions<p>
+
+The functions listed below are special for the Telemon 3.0. See the <url
+url="funcref.html" name="function reference"> for declaration and usage.
+
+<itemize>
+<item>explode
+<item>ping
+<item>shoot
+<item>zap
+<item>oupsx
+</itemize>
+
+
+<sect1>Hardware access<p>
+
+The following pseudo variables declared in the <tt/atmos.h/ header file do allow
+access to hardware located in the address space. Some variables are
+structures; accessing the struct fields will access the chip registers.
+
+<descrip>
+
+  <tag><tt/VIA/</tag>
+  Access to the VIA (Versatile Interface Adapter) chip is available via the
+  <tt/VIA/ variable. The structure behind this variable is explained in <tt/_6522.h/.
+
+</descrip><p>
+
+
+
+<sect>Loadable drivers<p>
+
+<em>Note:</em> Since the Atmos doesn't have working disk I/O
+(see <ref id="limitations" name="section &quot;Limitations&quot;">), the
+available drivers cannot be loaded at runtime (so the term "loadable drivers"
+is somewhat misleading). Instead, the drivers have to be statically linked. While
+this may seem overhead, it has two advantages:
+
+
+<sect1>Extended memory drivers<p>
+
+No extended memory drivers are currently available for the Atmos.
+
+
+<sect1>Joystick drivers<p>
+
+<descrip>
+
+telemon 3.0 manages joysticks but it had been handled yet.
+
+</descrip><p>
+
+
+<sect1>Mouse drivers<p>
+
+Telemon 3.0 manages also mouse, but it had been no handled yet in this version.
+
+<sect1>RS232 device drivers<p>
+
+<descrip>
+
+not done
+
+</descrip><p>
+
+
+
+<sect>Limitations<label id="limitations"><p>
+
+<sect1>Disk I/O<p>
+
+This version handles fopen, fread, fclose primitives. Because Telemon 3.0 handles these two primitives. By the way, 
+it uses an extension "ch376 card" which handles sdcard and FAT 32 usb key.
+
+<itemize>
+<item>fclose
+<item>fopen
+<item>fread
+
+</itemize>
+
+
+
+<sect>Other hints<p>
+
+
+<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/include/telemon.h b/include/telemon.h
deleted file mode 100644 (file)
index 70033a9..0000000
+++ /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/telemon30.h
deleted file mode 100644 (file)
index 73b0184..0000000
+++ /dev/null
@@ -1,21 +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, char display, char display);
-void circle(char rayon);
-
-
-
diff --git a/include/telestrat.h b/include/telestrat.h
new file mode 100644 (file)
index 0000000..73b0184
--- /dev/null
@@ -0,0 +1,21 @@
+
+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, char display, char display);
+void circle(char rayon);
+
+
+
index 0342a8ca44a111e3dab7139a2a6659de1ca6df29..8bcbe4410885cddcffecacf69fe16fa667a70302 100644 (file)
@@ -31,8 +31,7 @@ TARGETS = apple2    \
           sim6502   \
           sim65c02  \
           supervision\
-          telemon24\
-          telemon30
+          telestrat
 
 DRVTYPES = emd \
            joy \
diff --git a/libsrc/telemon24/_scrsize.s b/libsrc/telemon24/_scrsize.s
deleted file mode 100644 (file)
index 305e41c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-;
-; 2003-04-13, Ullrich von Bassewitz
-; 2013-07-16, Greg King
-;
-; Screen size variables
-;
-
-        .export         screensize
-        .include        "telemon24.inc"
-
-.proc   screensize
-
-        ldx     #SCREEN_XSIZE
-        ldy     #SCREEN_YSIZE
-        rts
-
-.endproc
-
-
diff --git a/libsrc/telemon24/crt0.s b/libsrc/telemon24/crt0.s
deleted file mode 100644 (file)
index a3c92a3..0000000
+++ /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/ctype.s b/libsrc/telemon24/ctype.s
deleted file mode 100644 (file)
index 79edafb..0000000
+++ /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/telemon24/hires.s b/libsrc/telemon24/hires.s
deleted file mode 100644 (file)
index 80d6782..0000000
+++ /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 (file)
index d8547e5..0000000
+++ /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/oserrlist.s b/libsrc/telemon24/oserrlist.s
deleted file mode 100644 (file)
index 8ec41de..0000000
+++ /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/telemon24/oserror.s b/libsrc/telemon24/oserror.s
deleted file mode 100644 (file)
index 37c9bd7..0000000
+++ /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/telemon24/print.s b/libsrc/telemon24/print.s
deleted file mode 100644 (file)
index a135cdd..0000000
+++ /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/sysuname.s b/libsrc/telemon24/sysuname.s
deleted file mode 100644 (file)
index 51af1d8..0000000
+++ /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/telemon24/tapehdr.s b/libsrc/telemon24/tapehdr.s
deleted file mode 100644 (file)
index 9b183e1..0000000
+++ /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 (file)
index 32bbf61..0000000
+++ /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 (file)
index 84bee3a..0000000
+++ /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/_open.s b/libsrc/telemon30/_open.s
deleted file mode 100644 (file)
index 7ea2d83..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-        .export         _open
-               .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 _open
-; Throw away any additional parameters passed through the ellipsis
-
-        dey                     ; Parm count < 4 shouldn't be needed to be...
-        dey                     ; ...checked (it generates a c compiler warning)
-        dey
-        dey
-        beq            parmok          ; Branch if parameter count ok
-        jsr            addysp          ; Fix stack, throw away unused parameters
-
-; Parameters ok. Pop the flags and save them into tmp3
-
-parmok: jsr            popax           ; Get flagss
-               sta                     tmp3 ; save flags
-; 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
-.endproc
-               
-               
\ No newline at end of file
diff --git a/libsrc/telemon30/_read.s b/libsrc/telemon30/_read.s
deleted file mode 100644 (file)
index ee822f1..0000000
+++ /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 (file)
index a929f97..0000000
+++ /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 (file)
index 460a700..0000000
+++ /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/crt0.s b/libsrc/telemon30/crt0.s
deleted file mode 100644 (file)
index 72bad5f..0000000
+++ /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        "telemon30.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/telemon30/ctype.s b/libsrc/telemon30/ctype.s
deleted file mode 100644 (file)
index 79edafb..0000000
+++ /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 (file)
index 4f2b091..0000000
+++ /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 (file)
index 974f841..0000000
+++ /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/mainargs.s b/libsrc/telemon30/mainargs.s
deleted file mode 100644 (file)
index 452d0d6..0000000
+++ /dev/null
@@ -1,137 +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
-               .import                         ptr1
-        .include        "telemon30.inc"
-        .macpack        generic
-
-MAXARGS  = 10                   ; Maximum number of arguments allowed
-
-
-
-
-
-; Assume that the program was loaded, a moment ago, by the traditional LOAD
-; statement.  Save the "most-recent filename" as argument #0.
-initmainargs:
-
-        ldx     #0      ; Limit the length
-      ;  lda     #0              ; The terminating NUL character
-       ; beq     L1              ; Branch always
-L0:     lda     BUFEDT,x
-               beq     L3
-               cmp     #' '
-               bne     L1
-               lda     #0
-               beq     L3
-L1:     sta     name,x
-        inx
-               cpx     #FNAME_LEN
-        bne     L0
-               lda     #0
-L3:            
-               sta     name,x
-        inc     __argc          ; argc always is equal to, at least, 1
-
-
-
-               
-               
-        ldy     #1 * 2          ; Point to second argv slot
-               
-next:   lda     BUFEDT,x
-        beq     done            ; End of line reached
-        inx
-        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
-        inc    L5+1
-L4:            
-               ;add     #<args
-        sta     argv,y          ; argv[y]=&arg
-L5:            
-        lda     #>BUFEDT
-        ;adc     #>args
-        sta     argv+1,y
-        iny
-        iny
-        inc     __argc          ; Found another arg
-
-; Search for the end of the argument
-
-
-
-argloop:lda     BUFEDT,x
-        beq     done
-        inx
-        cmp     term
-        bne     argloop
-
-; We've found the end of the argument. X points one character behind it, and
-; A contains the terminating character. To make the argument a valid C string,
-; replace the terminating character by a zero.
-
-        lda     #0
-        sta     BUFEDT-1,x
-
-; Check if the maximum number of command line arguments is reached. If not,
-; parse the next one.
-
-        lda     __argc          ; Get low byte of argument count
-        cmp     #MAXARGS        ; Maximum number of arguments reached?
-        bcc     next            ; Parse next one if not                
-               
-       
-               
-               
-done:   lda     #<argv
-        ldx     #>argv
-        sta     __argv
-        stx     __argv + 1
-        rts
-               
-               
-               
-.segment        "INIT"
-
-term:   .res    1
-
-
-.data
-
-name:   .res    FNAME_LEN + 1
-args:   .res    SCREEN_XSIZE * 2 - 1
-
-ptr_current:
-       .res 2
-param_found:
-               .res 1
-; char* argv[MAXARGS+1]={name};
-argv:  
-               .addr   name
-        .res    MAXARGS * 2
diff --git a/libsrc/telemon30/mym.s b/libsrc/telemon30/mym.s
deleted file mode 100644 (file)
index f387f9d..0000000
+++ /dev/null
@@ -1,626 +0,0 @@
-        .export         _Mym_MusicStart
-               .importzp sp,tmp2,tmp3,tmp1,ptr1
-               
-               .include        "telemon30.inc"
-               
-; To check: AYC
-; http://cpcwiki.eu/index.php/AYC
-
-
-
-       
-_DecodedByte           :=$D0 ; Byte being currently decoded from the MYM stream
-_DecodeBitCounter      :=$D2           ; Number of bits we can read in the current byte
-_DecodedResult         :=$D3   ; What is returned by the 'read bits' function
-_CurrentAYRegister     :=$D4           ; Contains the number of the register being decoded     
-_RegisterBufferHigh    :=$D5           ; Points to the high byte of the decoded register buffer, increment to move to the next register        
-_BufferFrameOffset     :=$D6           ; From 0 to 127, used when filling the decoded register buffer
-_MusicResetCounter     :=$D7           ; 2 bytes Contains the number of rows to play before reseting
-_CurrentFrame          :=$D9           ; From 0 to 255 and then cycles... the index of the frame to play this vbl
-_PlayerVbl                     :=$DA
-_FrameLoadBalancer     :=$DB           ; We depack a new frame every 9 VBLs, this way the 14 registers are evenly depacked over 128 frames
-
-
-VIA_1                  :=      $30f
-VIA_2                  :=      $30c
-
-_MusicData             :=      $c000
-
-; mym(char *buf)
-
-
-
-
-;
-; Current PSG values during unpacking
-;
-
-
-.proc _Mym_MusicStart
-
-       ; The two first bytes of the MYM music is the number of rows in the music
-       ; We decrement that at each frame, and when we reach zero, time to start again.
-       sta ptr1
-       stx ptr1+1
-       
-       ldy #0
-       lda (ptr1),y
-       sta _MusicResetCounter+0
-       iny
-       lda (ptr1),y
-       tax
-       inx
-       stx _MusicResetCounter+1
-       
-       ;ldx _MusicData+0
-       ;stx _MusicResetCounter+0
-       ;ldx _MusicData+1
-       ;inx
-       ;stx _MusicResetCounter+1
-               
-
-       ; Initialize the read bit counter
-       ldy #2 ; should be useless because we can do iny which earn 1 byte
-       
-       lda ptr1
-       clc
-       adc #2
-       bcc next20
-       inc ptr1+1
-       lda ptr1+1
-       sta __auto_music_ptr+2
-next20:
-       sta ptr1
-       sta __auto_music_ptr+1
-       
-       
-       
-       ;lda #<(_MusicData+2)
-       ;sta __auto_music_ptr+1
-       ;lda #>(_MusicData+2)
-       ;sta __auto_music_ptr+2
-
-       lda #1
-       sta _DecodeBitCounter
-
-       ; Clear all data
-       lda #0
-       sta _DecodedResult
-       sta _DecodedByte
-       sta _PlayerVbl
-       sta _PlayerRegCurrentValue
-       sta _BufferFrameOffset
-       sta _PlayerCount
-       sta _CurrentAYRegister
-       sta _CurrentFrame
-
-       ldx #14
-loop_init:
-       dex
-       sta _PlayerRegValues,x
-       bne loop_init
-
-
-       ;
-       ; Unpack the 128 first register frames
-       ;
-       
-       lda #>_PlayerBuffer
-       sta _RegisterBufferHigh
-
-       ldx #0
-unpack_block_loop:
-       stx _CurrentAYRegister
-       
-       ; Unpack that register
-       jsr _PlayerUnpackRegister2
-
-       ; Next register
-       ldx _CurrentAYRegister
-       inx
-       cpx #14
-       bne unpack_block_loop
-       
-
-       lda #128
-       sta _PlayerVbl+0
-
-       lda #0
-       sta _PlayerCount
-       sta _CurrentAYRegister
-       sta _CurrentFrame
-
-       lda #9
-       sta _FrameLoadBalancer
-
-       lda #1
-       sta _MusicPlaying
-
-       ;
-       ; Install the IRQ
-       ;
-       php
-       sei
-       lda #<_Mym_PlayFrame
-       sta _InterruptCallBack_3+1
-       lda #>_Mym_PlayFrame
-       sta _InterruptCallBack_3+2
-       plp
-
-       rts
-
-
-_Mym_MusicStop:
-
-       ; Indicate the main code that the music is finished
-       lda #0
-       sta _MusicPlaying
-
-       ; Disable the IRQ so it does not conflict or cause weird things
-       php
-       sei
-       lda #<_DoNothing
-       sta _InterruptCallBack_3+1
-       lda #>_DoNothing
-       sta _InterruptCallBack_3+2
-       plp
-
-       ; Cut the sound so it does not sounds like a dying cat
-
-       ; y=register number
-       ; x=value to write
-       ldy #7 ; Control register
-       ldx #$FF
-       jsr _PsgPlayRegister
-
-       ldy #8  ; Volume A
-       ldx #0
-       jsr _PsgPlayRegister
-
-       ldy #9  ; Volume B
-       ldx #0
-       jsr _PsgPlayRegister
-
-       ldy #10 ; Volume C
-       ldx #0
-       jsr _PsgPlayRegister
-       rts
-
-
-_Mym_PlayFrame:
-
-       ;
-       ; Check for end of music
-       ; CountZero: $81,$0d
-       dec _MusicResetCounter+0
-       bne music_contines
-       dec _MusicResetCounter+1
-       bne music_contines
-
-music_resets:
-       jmp _Mym_MusicStop
-       
-music_contines:
-
-       ;
-       ; Play a frame of 14 registers
-       ;
-       
-       lda _CurrentFrame
-       sta _auto_psg_play_read+1
-       lda #>_PlayerBuffer
-       sta _auto_psg_play_read+2
-
-       ldy #0
-register_loop:
-
-_auto_psg_play_read:
-       ldx     _PlayerBuffer
-
-       ; y=register number
-       ; x=value to write
-       jsr _PsgPlayRegister
-
-       inc _auto_psg_play_read+2 
-       iny
-       cpy #14
-       bne register_loop
-       
-
-
-       inc _CurrentFrame
-       inc _PlayerCount
-
-       lda _CurrentAYRegister
-       cmp #14
-       bcs end_reg
-
-       
-       dec _FrameLoadBalancer
-       bne end
-
-       jsr _PlayerUnpackRegister
-       inc _CurrentAYRegister
-       lda #9
-       sta _FrameLoadBalancer
-end:   
-       rts
-       
-
-end_reg:
-       
-       lda _PlayerCount
-       cmp #128
-       bcc skip2
-
-       lda #0
-       sta _CurrentAYRegister
-       sta _PlayerCount
-       lda #9
-       sta _FrameLoadBalancer
-       
-       clc
-       lda _PlayerVbl+0
-       adc #128
-       sta _PlayerVbl+0
-skip2:
-       
-
-       rts
-
-
-
-; y=register number
-; x=value to write
-_PsgPlayRegister:
-
-       sty     VIA_1
-       txa
-
-       pha
-       lda     VIA_2
-       ora     #$EE            ; $EE   238     11101110
-       sta     VIA_2
-
-       and     #$11            ; $11   17      00010001
-       ora     #$CC            ; $CC   204     11001100
-       sta     VIA_2
-
-       tax
-       pla
-       sta     VIA_1
-       txa
-       ora     #$EC            ; $EC   236     11101100
-       sta     VIA_2
-
-       and     #$11            ; $11   17      00010001
-       ora     #$CC            ; $CC   204     11001100
-       sta     VIA_2
-
-       rts
-
-
-
-
-;
-; Initialise X with the number of bits to read
-; Y is not modifier
-;
-_ReadBits:
-
-       lda #0
-       sta _DecodedResult
-
-       ; Will iterate X times (number of bits to read)
-loop_read_bits:
-
-       dec _DecodeBitCounter
-       beq get_next_byte
-
-shift_bit:
-       asl _DecodedByte
-       rol _DecodedResult
-
-       dex
-       bne loop_read_bits
-       rts
-
-get_next_byte:
-       ; reset mask
-       lda #8
-       sta _DecodeBitCounter
-
-       ; fetch a new byte, and increment the adress.
-__auto_music_ptr:
-       lda _MusicData+2
-       sta _DecodedByte
-
-       inc __auto_music_ptr+1
-       bne shift_bit
-       inc __auto_music_ptr+2
-       jmp shift_bit
-
-
-
-
-
-_PlayerUnpackRegister:
-       lda #>_PlayerBuffer
-       clc
-       adc _CurrentAYRegister
-       sta _RegisterBufferHigh
-_PlayerUnpackRegister2:
-       ;
-       ; Init register bit count and current value
-       ;        
-       ldx _CurrentAYRegister
-       lda _PlayerRegValues,x
-       sta _PlayerRegCurrentValue  
-       
-
-       ;
-       ; Check if it's packed or not
-       ; and call adequate routine...
-       ;
-       ldx #1
-       jsr _ReadBits
-       ldx _DecodedResult
-       bne DecompressFragment
-
-       
-UnchangedFragment:
-
-       ;
-       ; No change at all, just repeat '_PlayerRegCurrentValue' 128 times 
-       ;
-       lda _RegisterBufferHigh                         ; highpart of buffer adress + register number
-       sta __auto_copy_unchanged_write+2
-
-       ldx #128                                                        ; 128 iterations
-       lda _PlayerRegCurrentValue                      ; Value to write
-
-       ldy _PlayerVbl
-       
-repeat_loop:
-__auto_copy_unchanged_write:
-       sta _PlayerBuffer,y
-       iny     
-       dex
-       bne repeat_loop
-
-
-       jmp player_main_return
-
-       
-player_main_return:
-       ; Write back register current value
-       ldx _CurrentAYRegister
-       lda _PlayerRegCurrentValue  
-       sta _PlayerRegValues,x
-
-       ; Move to the next register buffer
-       inc _RegisterBufferHigh
-       rts
-
-
-
-
-DecompressFragment:
-       lda _PlayerVbl                                          ; Either 0 or 128 at this point else we have a problem...
-       sta _BufferFrameOffset
-
-decompressFragmentLoop:
-       
-player_copy_packed_loop:
-       ; Check packing method
-       ldx #1
-       jsr _ReadBits
-
-       ldx _DecodedResult
-       bne PlayerNotCopyLast
-
-UnchangedRegister:
-
-       ; We just copy the current value 128 times
-       lda _RegisterBufferHigh                         ; highpart of buffer adress + register number
-       sta __auto_player_copy_last+2
-
-       ldx _BufferFrameOffset                          ; Value between 00 and 7f
-       lda _PlayerRegCurrentValue                      ; Value to copy
-__auto_player_copy_last:
-       sta _PlayerBuffer,x
-
-       inc _BufferFrameOffset
-
-
-
-player_return:
-
-       ; Check end of loop
-       lda _BufferFrameOffset
-       and #127
-       bne decompressFragmentLoop
-
-       jmp player_main_return
-
-
-PlayerNotCopyLast:
-       ; Check packing method
-       ldx #1
-       jsr _ReadBits
-
-       ldx _DecodedResult
-       beq DecompressWithOffset
-
-ReadNewRegisterValue:
-       ; Read new register value (variable bit count)
-       ldx _CurrentAYRegister
-       lda _PlayerRegBits,x
-       tax
-       jsr _ReadBits
-       ldx _DecodedResult
-       stx _PlayerRegCurrentValue
-
-       ; Copy to stream
-       lda _RegisterBufferHigh                         ; highpart of buffer adress + register number
-       sta __auto_player_read_new+2
-
-       ldx _BufferFrameOffset                          ; Value between 00 and 7f
-       lda _PlayerRegCurrentValue                      ; New value to write
-__auto_player_read_new:
-       sta _PlayerBuffer,x
-
-       inc _BufferFrameOffset
-       jmp player_return
-
-
-
-
-DecompressWithOffset:
-
-       ; Read Offset (0 to 127)
-       ldx #7
-       jsr _ReadBits                                   
-
-       lda _RegisterBufferHigh                 ; highpart of buffer adress + register number
-       sta __auto_write+2                              ; Write adress
-       sta __auto_read+2                               ; Read adress
-
-       ; Compute wrap around offset...
-       lda _BufferFrameOffset                          ; between 0 and 255
-       clc
-       adc _DecodedResult                                      ; + Offset Between 00 and 7f
-       sec
-       sbc #128                                                        ; -128
-       tay
-
-       ; Read count (7 bits)
-       ldx #7
-       jsr _ReadBits
-       
-       inc     _DecodedResult                                  ; 1 to 129
-
-
-       ldx _BufferFrameOffset
-       
-player_copy_offset_loop:
-
-__auto_read:
-       lda _PlayerBuffer,y                             ; Y for reading
-       iny
-
-__auto_write:
-       sta _PlayerBuffer,x                             ; X for writing
-
-       inx
-       dec _DecodedResult
-       bne player_copy_offset_loop 
-
-       stx _BufferFrameOffset
-       sta _PlayerRegCurrentValue
-
-       jmp player_return
-
-
-
-
-;
-; Size in bits of each PSG register
-;
-_PlayerRegBits:
-       ; Chanel A Frequency
-       .byt 8
-       .byt 4
-
-       ; Chanel B Frequency
-       .byt 8
-       .byt 4 
-
-       ; Chanel C Frequency
-       .byt 8
-       .byt 4
-
-       ; Chanel sound generator
-       .byt 5
-
-       ; select
-       .byt 8 
-
-       ; Volume A,B,C
-       .byt 5
-       .byt 5
-       .byt 5
-
-       ; Wave period
-       .byt 8 
-       .byt 8
-
-       ; Wave form
-       .byt 8
-
-_PlayerCount:
-       .res 1,0 ; must be equal to 0
-_MusicPlaying:
-       .res 1,0 ; must be equal to 0
-       
-
-_PlayerRegValues:
-_RegisterChanAFrequency:
-       ; Chanel A Frequency
-       .res 1,8
-       .res 1,4
-
-_RegisterChanBFrequency:
-       ; Chanel B Frequency
-       .res 1,8
-       .res 1,4
-
-_RegisterChanCFrequency:
-       ; Chanel C Frequency
-       .res 1,8
-       .res 1,4
-
-_RegisterChanNoiseFrequency:
-       ; Chanel sound generator
-       .res 1,5
-
-       ; select
-       .res 1,8
-
-       ; Volume A,B,C
-_RegisterChanAVolume:
-       .res 1,5
-_RegisterChanBVolume:
-       .res 1,5
-_RegisterChanCVolume:
-       .res 1,5
-
-       ; Wave period
-       .res 1,8
-       .res 1,8
-
-       ; Wave form
-       .res 1,8
-
-_PlayerRegCurrentValue:
-       .res 1,0
-_DoNothing:
-       rts     
-
-_InterruptCallBack_3:          ; Used by the music player
-       jsr _DoNothing                  ; Transformed to "jsr _Mym_PlayFrame" -> 12 cycles
-       
-;      jsr MiniScrollLoading   ; -> 338 cycles
-
-       pla
-       tay
-       pla
-       tax
-       pla
-
-       rti
-_PlayerBuffer: 
-       .res 256*14                     ; About 3.5 kilobytes somewhere in memory, we put the music file in overlay memory
-       
-.endproc       
-
diff --git a/libsrc/telemon30/orixhdr.s b/libsrc/telemon30/orixhdr.s
deleted file mode 100644 (file)
index 1b03518..0000000
+++ /dev/null
@@ -1,35 +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,%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
-
diff --git a/libsrc/telemon30/oserrlist.s b/libsrc/telemon30/oserrlist.s
deleted file mode 100644 (file)
index 8ec41de..0000000
+++ /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 (file)
index 37c9bd7..0000000
+++ /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 (file)
index 56c513f..0000000
+++ /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 (file)
index 2df18f4..0000000
+++ /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 (file)
index 51af1d8..0000000
+++ /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/telemon30/write.s b/libsrc/telemon30/write.s
deleted file mode 100644 (file)
index d762eb9..0000000
+++ /dev/null
@@ -1,83 +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        "telemon30.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
-
-               ; if fd=0001 then it stdout
-               
-               
-               cpx     #0
-               beq     next
-               jmp     L1
-next:          
-               cmp     #1
-               beq     L1              
-               
-               ; Here it's a file opened
-               lda     ptr1
-               sta     PTR_READ_DEST
-               lda     ptr1+1
-               sta     PTR_READ_DEST+1
-               lda     ptr3
-               ldy     ptr3+1
-               BRK_TELEMON  XFWRITE
-               rts
-               
-               
-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_TELEMON  XWR0  ; Macro
-               lda #$0d ; return to the beggining of the line
-               BRK_TELEMON  XWR0  ; Macro ; 
-       
-
-        ldx     #$0D
-L3:     
-               BRK_TELEMON  XWR0  ; Macro
-
-        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/telestrat/ch376.s b/libsrc/telestrat/ch376.s
new file mode 100644 (file)
index 0000000..fbfa160
--- /dev/null
@@ -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 (file)
index 0000000..881d089
--- /dev/null
@@ -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/telestrat/crt0.s b/libsrc/telestrat/crt0.s
new file mode 100644 (file)
index 0000000..59b1ea6
--- /dev/null
@@ -0,0 +1,91 @@
+;
+; Startup code for cc65 (Oric version)
+;
+; By Debrune Jérôme <jede@oric.org> and Ullrich von Bassewitz <uz@cc65.org>
+;
+
+        .export         _exit
+        .export         __STARTUP__ : absolute = 1      ; Mark as startup
+
+        .import         initlib, donelib
+        .import         callmain, zerobss
+        .import         __MAIN_START__, __MAIN_SIZE__
+
+        .include        "zeropage.inc"
+        .include        "telestrat.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
+
+; 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
+
+
+; 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/telestrat/ctype.s b/libsrc/telestrat/ctype.s
new file mode 100644 (file)
index 0000000..79edafb
--- /dev/null
@@ -0,0 +1,299 @@
+;
+; 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/telestrat/graphics.s b/libsrc/telestrat/graphics.s
new file mode 100644 (file)
index 0000000..9984036
--- /dev/null
@@ -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 (file)
index 0000000..7069d10
--- /dev/null
@@ -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/telestrat/mainargs.s b/libsrc/telestrat/mainargs.s
new file mode 100644 (file)
index 0000000..b41e2a9
--- /dev/null
@@ -0,0 +1,120 @@
+;
+; 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
+               .import                         ptr1
+        .include        "telestrat.inc"
+        .macpack        generic
+
+MAXARGS  = 10                   ; Maximum number of arguments allowed
+
+
+
+
+
+; Assume that the program was loaded, a moment ago, by the traditional LOAD
+; statement.  Save the "most-recent filename" as argument #0.
+initmainargs:
+
+        ldx     #0      ; Limit the length
+L0:     lda     BUFEDT,x
+               beq     L3
+               cmp     #' '
+               bne     L1
+               lda     #0
+               beq     L3
+L1:     sta     name,x
+        inx
+               cpx     #FNAME_LEN
+        bne     L0
+               lda     #0
+L3:            
+               sta     name,x
+        inc     __argc          ; argc always is equal to, at least, 1
+
+               
+        ldy     #1 * 2          ; Point to second argv slot
+               
+next:   lda     BUFEDT,x
+        beq     done            ; End of line reached
+        inx
+        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
+        inc    L5+1
+L4:
+        sta     argv,y          ; argv[y]=&arg
+L5:            
+        lda     #>BUFEDT
+        sta     argv+1,y
+        iny
+        iny
+        inc     __argc          ; Found another arg
+
+; Search for the end of the argument
+
+
+
+argloop:lda     BUFEDT,x
+        beq     done
+        inx
+        cmp     term
+        bne     argloop
+
+; We've found the end of the argument. X points one character behind it, and
+; A contains the terminating character. To make the argument a valid C string,
+; replace the terminating character by a zero.
+
+        lda     #0
+        sta     BUFEDT-1,x
+
+; Check if the maximum number of command line arguments is reached. If not,
+; parse the next one.
+
+        lda     __argc          ; Get low byte of argument count
+        cmp     #MAXARGS        ; Maximum number of arguments reached?
+        bcc     next            ; Parse next one if not                
+               
+               
+done:   lda     #<argv
+        ldx     #>argv
+        sta     __argv
+        stx     __argv + 1
+        rts
+               
+               
+.segment        "INIT"
+
+term:   .res    1
+
+
+.data
+
+name:   .res    FNAME_LEN + 1
+args:   .res    SCREEN_XSIZE * 2 - 1
+
+param_found:
+               .res 1
+; char* argv[MAXARGS+1]={name};
+argv:  
+               .addr   name
+        .res    MAXARGS * 2
diff --git a/libsrc/telestrat/mym.s b/libsrc/telestrat/mym.s
new file mode 100644 (file)
index 0000000..009ccf5
--- /dev/null
@@ -0,0 +1,626 @@
+        .export         _Mym_MusicStart
+               .importzp sp,tmp2,tmp3,tmp1,ptr1
+               
+               .include        "telestrat.inc"
+               
+; To check: AYC
+; http://cpcwiki.eu/index.php/AYC
+
+
+
+       
+_DecodedByte           :=$D0 ; Byte being currently decoded from the MYM stream
+_DecodeBitCounter      :=$D2           ; Number of bits we can read in the current byte
+_DecodedResult         :=$D3   ; What is returned by the 'read bits' function
+_CurrentAYRegister     :=$D4           ; Contains the number of the register being decoded     
+_RegisterBufferHigh    :=$D5           ; Points to the high byte of the decoded register buffer, increment to move to the next register        
+_BufferFrameOffset     :=$D6           ; From 0 to 127, used when filling the decoded register buffer
+_MusicResetCounter     :=$D7           ; 2 bytes Contains the number of rows to play before reseting
+_CurrentFrame          :=$D9           ; From 0 to 255 and then cycles... the index of the frame to play this vbl
+_PlayerVbl                     :=$DA
+_FrameLoadBalancer     :=$DB           ; We depack a new frame every 9 VBLs, this way the 14 registers are evenly depacked over 128 frames
+
+
+VIA_1                  :=      $30f
+VIA_2                  :=      $30c
+
+_MusicData             :=      $c000
+
+; mym(char *buf)
+
+
+
+
+;
+; Current PSG values during unpacking
+;
+
+
+.proc _Mym_MusicStart
+
+       ; The two first bytes of the MYM music is the number of rows in the music
+       ; We decrement that at each frame, and when we reach zero, time to start again.
+       sta ptr1
+       stx ptr1+1
+       
+       ldy #0
+       lda (ptr1),y
+       sta _MusicResetCounter+0
+       iny
+       lda (ptr1),y
+       tax
+       inx
+       stx _MusicResetCounter+1
+       
+       ;ldx _MusicData+0
+       ;stx _MusicResetCounter+0
+       ;ldx _MusicData+1
+       ;inx
+       ;stx _MusicResetCounter+1
+               
+
+       ; Initialize the read bit counter
+       ldy #2 ; should be useless because we can do iny which earn 1 byte
+       
+       lda ptr1
+       clc
+       adc #2
+       bcc next20
+       inc ptr1+1
+       lda ptr1+1
+       sta __auto_music_ptr+2
+next20:
+       sta ptr1
+       sta __auto_music_ptr+1
+       
+       
+       
+       ;lda #<(_MusicData+2)
+       ;sta __auto_music_ptr+1
+       ;lda #>(_MusicData+2)
+       ;sta __auto_music_ptr+2
+
+       lda #1
+       sta _DecodeBitCounter
+
+       ; Clear all data
+       lda #0
+       sta _DecodedResult
+       sta _DecodedByte
+       sta _PlayerVbl
+       sta _PlayerRegCurrentValue
+       sta _BufferFrameOffset
+       sta _PlayerCount
+       sta _CurrentAYRegister
+       sta _CurrentFrame
+
+       ldx #14
+loop_init:
+       dex
+       sta _PlayerRegValues,x
+       bne loop_init
+
+
+       ;
+       ; Unpack the 128 first register frames
+       ;
+       
+       lda #>_PlayerBuffer
+       sta _RegisterBufferHigh
+
+       ldx #0
+unpack_block_loop:
+       stx _CurrentAYRegister
+       
+       ; Unpack that register
+       jsr _PlayerUnpackRegister2
+
+       ; Next register
+       ldx _CurrentAYRegister
+       inx
+       cpx #14
+       bne unpack_block_loop
+       
+
+       lda #128
+       sta _PlayerVbl+0
+
+       lda #0
+       sta _PlayerCount
+       sta _CurrentAYRegister
+       sta _CurrentFrame
+
+       lda #9
+       sta _FrameLoadBalancer
+
+       lda #1
+       sta _MusicPlaying
+
+       ;
+       ; Install the IRQ
+       ;
+       php
+       sei
+       lda #<_Mym_PlayFrame
+       sta _InterruptCallBack_3+1
+       lda #>_Mym_PlayFrame
+       sta _InterruptCallBack_3+2
+       plp
+
+       rts
+
+
+_Mym_MusicStop:
+
+       ; Indicate the main code that the music is finished
+       lda #0
+       sta _MusicPlaying
+
+       ; Disable the IRQ so it does not conflict or cause weird things
+       php
+       sei
+       lda #<_DoNothing
+       sta _InterruptCallBack_3+1
+       lda #>_DoNothing
+       sta _InterruptCallBack_3+2
+       plp
+
+       ; Cut the sound so it does not sounds like a dying cat
+
+       ; y=register number
+       ; x=value to write
+       ldy #7 ; Control register
+       ldx #$FF
+       jsr _PsgPlayRegister
+
+       ldy #8  ; Volume A
+       ldx #0
+       jsr _PsgPlayRegister
+
+       ldy #9  ; Volume B
+       ldx #0
+       jsr _PsgPlayRegister
+
+       ldy #10 ; Volume C
+       ldx #0
+       jsr _PsgPlayRegister
+       rts
+
+
+_Mym_PlayFrame:
+
+       ;
+       ; Check for end of music
+       ; CountZero: $81,$0d
+       dec _MusicResetCounter+0
+       bne music_contines
+       dec _MusicResetCounter+1
+       bne music_contines
+
+music_resets:
+       jmp _Mym_MusicStop
+       
+music_contines:
+
+       ;
+       ; Play a frame of 14 registers
+       ;
+       
+       lda _CurrentFrame
+       sta _auto_psg_play_read+1
+       lda #>_PlayerBuffer
+       sta _auto_psg_play_read+2
+
+       ldy #0
+register_loop:
+
+_auto_psg_play_read:
+       ldx     _PlayerBuffer
+
+       ; y=register number
+       ; x=value to write
+       jsr _PsgPlayRegister
+
+       inc _auto_psg_play_read+2 
+       iny
+       cpy #14
+       bne register_loop
+       
+
+
+       inc _CurrentFrame
+       inc _PlayerCount
+
+       lda _CurrentAYRegister
+       cmp #14
+       bcs end_reg
+
+       
+       dec _FrameLoadBalancer
+       bne end
+
+       jsr _PlayerUnpackRegister
+       inc _CurrentAYRegister
+       lda #9
+       sta _FrameLoadBalancer
+end:   
+       rts
+       
+
+end_reg:
+       
+       lda _PlayerCount
+       cmp #128
+       bcc skip2
+
+       lda #0
+       sta _CurrentAYRegister
+       sta _PlayerCount
+       lda #9
+       sta _FrameLoadBalancer
+       
+       clc
+       lda _PlayerVbl+0
+       adc #128
+       sta _PlayerVbl+0
+skip2:
+       
+
+       rts
+
+
+
+; y=register number
+; x=value to write
+_PsgPlayRegister:
+
+       sty     VIA_1
+       txa
+
+       pha
+       lda     VIA_2
+       ora     #$EE            ; $EE   238     11101110
+       sta     VIA_2
+
+       and     #$11            ; $11   17      00010001
+       ora     #$CC            ; $CC   204     11001100
+       sta     VIA_2
+
+       tax
+       pla
+       sta     VIA_1
+       txa
+       ora     #$EC            ; $EC   236     11101100
+       sta     VIA_2
+
+       and     #$11            ; $11   17      00010001
+       ora     #$CC            ; $CC   204     11001100
+       sta     VIA_2
+
+       rts
+
+
+
+
+;
+; Initialise X with the number of bits to read
+; Y is not modifier
+;
+_ReadBits:
+
+       lda #0
+       sta _DecodedResult
+
+       ; Will iterate X times (number of bits to read)
+loop_read_bits:
+
+       dec _DecodeBitCounter
+       beq get_next_byte
+
+shift_bit:
+       asl _DecodedByte
+       rol _DecodedResult
+
+       dex
+       bne loop_read_bits
+       rts
+
+get_next_byte:
+       ; reset mask
+       lda #8
+       sta _DecodeBitCounter
+
+       ; fetch a new byte, and increment the adress.
+__auto_music_ptr:
+       lda _MusicData+2
+       sta _DecodedByte
+
+       inc __auto_music_ptr+1
+       bne shift_bit
+       inc __auto_music_ptr+2
+       jmp shift_bit
+
+
+
+
+
+_PlayerUnpackRegister:
+       lda #>_PlayerBuffer
+       clc
+       adc _CurrentAYRegister
+       sta _RegisterBufferHigh
+_PlayerUnpackRegister2:
+       ;
+       ; Init register bit count and current value
+       ;        
+       ldx _CurrentAYRegister
+       lda _PlayerRegValues,x
+       sta _PlayerRegCurrentValue  
+       
+
+       ;
+       ; Check if it's packed or not
+       ; and call adequate routine...
+       ;
+       ldx #1
+       jsr _ReadBits
+       ldx _DecodedResult
+       bne DecompressFragment
+
+       
+UnchangedFragment:
+
+       ;
+       ; No change at all, just repeat '_PlayerRegCurrentValue' 128 times 
+       ;
+       lda _RegisterBufferHigh                         ; highpart of buffer adress + register number
+       sta __auto_copy_unchanged_write+2
+
+       ldx #128                                                        ; 128 iterations
+       lda _PlayerRegCurrentValue                      ; Value to write
+
+       ldy _PlayerVbl
+       
+repeat_loop:
+__auto_copy_unchanged_write:
+       sta _PlayerBuffer,y
+       iny     
+       dex
+       bne repeat_loop
+
+
+       jmp player_main_return
+
+       
+player_main_return:
+       ; Write back register current value
+       ldx _CurrentAYRegister
+       lda _PlayerRegCurrentValue  
+       sta _PlayerRegValues,x
+
+       ; Move to the next register buffer
+       inc _RegisterBufferHigh
+       rts
+
+
+
+
+DecompressFragment:
+       lda _PlayerVbl                                          ; Either 0 or 128 at this point else we have a problem...
+       sta _BufferFrameOffset
+
+decompressFragmentLoop:
+       
+player_copy_packed_loop:
+       ; Check packing method
+       ldx #1
+       jsr _ReadBits
+
+       ldx _DecodedResult
+       bne PlayerNotCopyLast
+
+UnchangedRegister:
+
+       ; We just copy the current value 128 times
+       lda _RegisterBufferHigh                         ; highpart of buffer adress + register number
+       sta __auto_player_copy_last+2
+
+       ldx _BufferFrameOffset                          ; Value between 00 and 7f
+       lda _PlayerRegCurrentValue                      ; Value to copy
+__auto_player_copy_last:
+       sta _PlayerBuffer,x
+
+       inc _BufferFrameOffset
+
+
+
+player_return:
+
+       ; Check end of loop
+       lda _BufferFrameOffset
+       and #127
+       bne decompressFragmentLoop
+
+       jmp player_main_return
+
+
+PlayerNotCopyLast:
+       ; Check packing method
+       ldx #1
+       jsr _ReadBits
+
+       ldx _DecodedResult
+       beq DecompressWithOffset
+
+ReadNewRegisterValue:
+       ; Read new register value (variable bit count)
+       ldx _CurrentAYRegister
+       lda _PlayerRegBits,x
+       tax
+       jsr _ReadBits
+       ldx _DecodedResult
+       stx _PlayerRegCurrentValue
+
+       ; Copy to stream
+       lda _RegisterBufferHigh                         ; highpart of buffer adress + register number
+       sta __auto_player_read_new+2
+
+       ldx _BufferFrameOffset                          ; Value between 00 and 7f
+       lda _PlayerRegCurrentValue                      ; New value to write
+__auto_player_read_new:
+       sta _PlayerBuffer,x
+
+       inc _BufferFrameOffset
+       jmp player_return
+
+
+
+
+DecompressWithOffset:
+
+       ; Read Offset (0 to 127)
+       ldx #7
+       jsr _ReadBits                                   
+
+       lda _RegisterBufferHigh                 ; highpart of buffer adress + register number
+       sta __auto_write+2                              ; Write adress
+       sta __auto_read+2                               ; Read adress
+
+       ; Compute wrap around offset...
+       lda _BufferFrameOffset                          ; between 0 and 255
+       clc
+       adc _DecodedResult                                      ; + Offset Between 00 and 7f
+       sec
+       sbc #128                                                        ; -128
+       tay
+
+       ; Read count (7 bits)
+       ldx #7
+       jsr _ReadBits
+       
+       inc     _DecodedResult                                  ; 1 to 129
+
+
+       ldx _BufferFrameOffset
+       
+player_copy_offset_loop:
+
+__auto_read:
+       lda _PlayerBuffer,y                             ; Y for reading
+       iny
+
+__auto_write:
+       sta _PlayerBuffer,x                             ; X for writing
+
+       inx
+       dec _DecodedResult
+       bne player_copy_offset_loop 
+
+       stx _BufferFrameOffset
+       sta _PlayerRegCurrentValue
+
+       jmp player_return
+
+
+
+
+;
+; Size in bits of each PSG register
+;
+_PlayerRegBits:
+       ; Chanel A Frequency
+       .byt 8
+       .byt 4
+
+       ; Chanel B Frequency
+       .byt 8
+       .byt 4 
+
+       ; Chanel C Frequency
+       .byt 8
+       .byt 4
+
+       ; Chanel sound generator
+       .byt 5
+
+       ; select
+       .byt 8 
+
+       ; Volume A,B,C
+       .byt 5
+       .byt 5
+       .byt 5
+
+       ; Wave period
+       .byt 8 
+       .byt 8
+
+       ; Wave form
+       .byt 8
+
+_PlayerCount:
+       .res 1,0 ; must be equal to 0
+_MusicPlaying:
+       .res 1,0 ; must be equal to 0
+       
+
+_PlayerRegValues:
+_RegisterChanAFrequency:
+       ; Chanel A Frequency
+       .res 1,8
+       .res 1,4
+
+_RegisterChanBFrequency:
+       ; Chanel B Frequency
+       .res 1,8
+       .res 1,4
+
+_RegisterChanCFrequency:
+       ; Chanel C Frequency
+       .res 1,8
+       .res 1,4
+
+_RegisterChanNoiseFrequency:
+       ; Chanel sound generator
+       .res 1,5
+
+       ; select
+       .res 1,8
+
+       ; Volume A,B,C
+_RegisterChanAVolume:
+       .res 1,5
+_RegisterChanBVolume:
+       .res 1,5
+_RegisterChanCVolume:
+       .res 1,5
+
+       ; Wave period
+       .res 1,8
+       .res 1,8
+
+       ; Wave form
+       .res 1,8
+
+_PlayerRegCurrentValue:
+       .res 1,0
+_DoNothing:
+       rts     
+
+_InterruptCallBack_3:          ; Used by the music player
+       jsr _DoNothing                  ; Transformed to "jsr _Mym_PlayFrame" -> 12 cycles
+       
+;      jsr MiniScrollLoading   ; -> 338 cycles
+
+       pla
+       tay
+       pla
+       tax
+       pla
+
+       rti
+_PlayerBuffer: 
+       .res 256*14                     ; About 3.5 kilobytes somewhere in memory, we put the music file in overlay memory
+       
+.endproc       
+
diff --git a/libsrc/telestrat/open.s b/libsrc/telestrat/open.s
new file mode 100644 (file)
index 0000000..9455855
--- /dev/null
@@ -0,0 +1,33 @@
+        .export         _open
+        .import                addysp,popax
+        .importzp          sp,tmp2,tmp3,tmp1
+       
+       
+        .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
+
+        dey                     ; Parm count < 4 shouldn't be needed to be...
+        dey                     ; ...checked (it generates a c compiler warning)
+        dey
+        dey
+        beq            parmok          ; Branch if parameter count ok
+        jsr            addysp          ; Fix stack, throw away unused parameters
+
+; Parameters ok. Pop the flags and save them into tmp3
+
+parmok: jsr            popax           ; Get flagss
+               sta                     tmp3 ; save flags
+; 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
+.endproc
+               
+               
\ No newline at end of file
diff --git a/libsrc/telestrat/orixhdr.s b/libsrc/telestrat/orixhdr.s
new file mode 100644 (file)
index 0000000..c2a65d9
--- /dev/null
@@ -0,0 +1,35 @@
+;
+; By Debrune Jérôme <jede@oric.org>
+
+;
+
+        ; 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__
+
+
+; ------------------------------------------------------------------------
+; Orix header see http://orix.oric.org/doku.php?id=orix:header for specs
+
+.segment        "ORIXHDR"
+
+    .byte   $01, $00          ; 
+
+    .byte   "ori"
+
+    .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
+
diff --git a/libsrc/telestrat/oserrlist.s b/libsrc/telestrat/oserrlist.s
new file mode 100644 (file)
index 0000000..8ec41de
--- /dev/null
@@ -0,0 +1,75 @@
+;
+; 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/telestrat/oserror.s b/libsrc/telestrat/oserror.s
new file mode 100644 (file)
index 0000000..37c9bd7
--- /dev/null
@@ -0,0 +1,17 @@
+;
+; 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/telestrat/print.s b/libsrc/telestrat/print.s
new file mode 100644 (file)
index 0000000..9942e3a
--- /dev/null
@@ -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 (file)
index 0000000..4bccbfc
--- /dev/null
@@ -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/telestrat/scrsize.s b/libsrc/telestrat/scrsize.s
new file mode 100644 (file)
index 0000000..75bd456
--- /dev/null
@@ -0,0 +1,19 @@
+;
+; 2003-04-13, Ullrich von Bassewitz
+; 2013-07-16, Greg King
+;
+; Screen size variables
+;
+
+        .export         screensize
+        .include        "telestrat.inc"
+
+.proc   screensize
+
+        ldx     #SCREEN_XSIZE
+        ldy     #SCREEN_YSIZE
+        rts
+
+.endproc
+
+
diff --git a/libsrc/telestrat/sound.s b/libsrc/telestrat/sound.s
new file mode 100644 (file)
index 0000000..3718deb
--- /dev/null
@@ -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/telestrat/sysuname.s b/libsrc/telestrat/sysuname.s
new file mode 100644 (file)
index 0000000..51af1d8
--- /dev/null
@@ -0,0 +1,46 @@
+;
+; 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/write.s b/libsrc/telestrat/write.s
new file mode 100644 (file)
index 0000000..1c01905
--- /dev/null
@@ -0,0 +1,79 @@
+;
+; jede jede@oric.org 2017-01-22
+
+        .export         _write
+        .import         popax
+        .importzp       ptr1, ptr2, ptr3, tmp1
+
+        .include        "telestrat.inc"
+
+; int write (int fd, const void* buf, int count);
+.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
+
+               ; if fd=0001 then it stdout
+               
+               
+               cpx     #0
+               beq     next
+               jmp     L1
+next:          
+               cmp     #1
+               beq     L1              
+               
+               ; Here it's a file opened
+               lda     ptr1
+               sta     PTR_READ_DEST
+               lda     ptr1+1
+               sta     PTR_READ_DEST+1
+               lda     ptr3
+               ldy     ptr3+1
+               BRK_TELEMON  XFWRITE
+               rts
+               
+               
+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_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 ; 
+       
+
+        ldx     #$0D
+L3:     
+               BRK_TELEMON  XWR0  ; Macro
+
+        inc     ptr1
+        bne     L1
+        inc     ptr1+1
+        jmp     L1
+
+; No error, return count
+
+L9:     lda     ptr3
+        ldx     ptr3+1
+        rts
+
+.endproc
+
+
index 1e0c5996f37e315de51892e529f0d81a6d53c59b..471afbbe80f8d44d6f3dd48503d7acdf9a425bad 100644 (file)
@@ -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:
index b0c9261fe3b8f3505e6995268765580ec26df447..872f66aff1909f509bbf624bd9ec2dcde2390b7c 100644 (file)
@@ -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;
index 67e4ad51b76f36d2a68e87b4904d985d45b86aa0..219afc8098cd554d7ff75c02b6a80c7f985ec9b7 100644 (file)
@@ -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  },
index 68c0953fef307f86944cb17e724e9ee18c07bb23..7409505bf230a5802747626ddef21d235918aa21 100644 (file)
@@ -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,