]> git.sur5r.net Git - cc65/commitdiff
Correcting some code from github comments
authorjede <jede@oric.org>
Wed, 1 Feb 2017 22:58:33 +0000 (23:58 +0100)
committerjede <jede@oric.org>
Wed, 1 Feb 2017 22:58:33 +0000 (23:58 +0100)
13 files changed:
README.md
asminc/telestrat.inc
cfg/telestrat.cfg
doc/telestrat.sgml
include/telestrat.h
libsrc/telestrat/ch376.s [deleted file]
libsrc/telestrat/graphics.s [deleted file]
libsrc/telestrat/keyboard.s [deleted file]
libsrc/telestrat/mym.s [deleted file]
libsrc/telestrat/orixhdr.s
libsrc/telestrat/oserrlist.s [deleted file]
libsrc/telestrat/oserror.s [deleted file]
libsrc/telestrat/print.s [deleted file]

index 26ca98cefb5dd9f5b603367ea4922de199135f68..16e92e8783e5f1b7afaba5d8d8b3f78d42749459 100644 (file)
--- a/README.md
+++ b/README.md
@@ -30,7 +30,7 @@ including
 - the Nintendo Entertainment System (NES) console.
 - the Watara Supervision console.
 - the Oric Atmos.
-- the Oric telestrat.
+- the Oric Telestrat.
 - the Lynx console.
 - the Ohio Scientific Challenger 1P.
 
index 24a1aa538bb8a2527d3c4a311341adea62ccca2b..2c3502ba8821a0f769cdcabd93ecfb61d25fe983 100644 (file)
@@ -24,8 +24,8 @@ FNAME_LEN       = 11            ; maximum length of file-name
 RES             := $00
 RESB            := $02
 
-TR0                := $0C
-TR1                := $0D
+TR0             := $0C
+TR1             := $0D
 
 PTR_READ_DEST   := $2C           ; used for XFREAD and XWRITE only in telemon 3.0
 
@@ -123,10 +123,11 @@ XZAP             = $46
 XSHOOT           = $47
 XCIRCL           = $8F
 XCURSE           = $90
-XEXPLO           = $9C 
-XPING            = $9D
 XPAPER           = $92
 XINK             = $93
+XEXPLO           = $9C 
+XPING            = $9D
+
 
 ; ---------------------------------------------------------------------------
 ; Page $500
index b9f0b40261dfbf4f78c2537464ef8b0fd54a29c7..395a936e1bd9e6d0c6c886801a0eadf35cba998d 100644 (file)
@@ -1,9 +1,6 @@
 SYMBOLS {
-
     __ORIXHDR__:   type = import;
-
     __STACKSIZE__: type = weak, value = $0800; # 2K stack
-
     __RAMEND__:    type = weak, value = $9800;
 }
 MEMORY {
index ce9e044b4ece1365f509e9c0ece6a07623f834f9..b981fbfaf432aeeee57903c3ad5a8e405feb3dc6 100644 (file)
@@ -10,7 +10,7 @@
 
 <abstract>
 An overview over the Telestrat (telemon 3.0 : http://orix.oric.org) runtime system as it is implemented for the cc65 C
-compiler.
+compiler.)
 </abstract>
 
 <!-- Table of contents -->
@@ -21,21 +21,35 @@ compiler.
 <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,
+cc65 C compiler. It describes the memory layout, Telestrat-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
+Please note that Telestrat-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 the linker for the Telestrat target
+is a machine language program with a 20 bytes header described here : http://orix.oric.org/doku.php?id=orix:header 
 
-<sect>Binary format<p>
+This header is used for Telemon 3.0. 
+
+Anyway, for Telemon 2.4, there is no file management, there is no TAPE routine in telemon, there is no way to load a binary easiy. 
+
+Stratsed (the Telestrat operating system) handles files management. Stratsed is loaded to memory from floppy disk. 
+
+There is no tool to insert a binary in a Stratsed floppy disk. 
+
+The only way to load a binary (for Telemon 2.4) is to :
+<itemize>
+<item>remove the 20 bytes header
+<item>download osdk : http://osdk.defence-force.org/index?page=download
+<item>use Floppybuilder in OSDK to insert the binary with the tool (please read FloppyBuilder manual to insert your binary, and to start microdisc boot sector when telestrat starts)
+</itemize>
 
-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
 
 
 
@@ -64,12 +78,12 @@ Special locations:
 
 <sect>Platform-specific header files<p>
 
-Programs containing Telemon 3.0 -specific code may use the <tt/telemon.h/ header file.
+Programs containing Telestrat -specific code may use the <tt/telestrat.h/ header file.
 
 
-<sect1>Telemon 3.0-specific functions<p>
+<sect1>Telestrat-specific functions<p>
 
-The functions listed below are special for the Telemon 3.0. See the <url
+The functions listed below are special for the Telestrat. See the <url
 url="funcref.html" name="function reference"> for declaration and usage.
 
 <itemize>
@@ -77,13 +91,13 @@ url="funcref.html" name="function reference"> for declaration and usage.
 <item>ping
 <item>shoot
 <item>zap
-<item>oupsx
+<item>oups
 </itemize>
 
 
 <sect1>Hardware access<p>
 
-The following pseudo variables declared in the <tt/atmos.h/ header file do allow
+The following pseudo variables declared in the <tt/telestrat.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.
 
@@ -99,30 +113,23 @@ structures; accessing the struct fields will access the chip registers.
 
 <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.
+No extended memory drivers are currently available for the Telestrat.
 
 
 <sect1>Joystick drivers<p>
 
 <descrip>
 
-telemon 3.0 manages joysticks but it had been handled yet.
+telemon 2.4 & 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.
+Telestrat manages also mouse, but it had been no handled yet in this version.
 
 <sect1>RS232 device drivers<p>
 
@@ -132,14 +139,12 @@ 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.
+This version handles fopen, fread, fclose primitives. Because Telemon 3.0 handles these three primitives. By the way, 
+it uses an extension "ch376 card" which handles sdcard and FAT 32 usb key. In the next version of Telemon, FT DOS, Sedoric, Stratsed will be handled in these 3 primitives.
 
 <itemize>
 <item>fclose
index 73b018444260c164a0933ac4bf422ab599341191..85da8df60303f65038d134c6484ebd329b851c27 100644 (file)
@@ -1,5 +1,5 @@
 
-void print (char *);
+
 
 void hires();
 void text();
@@ -14,8 +14,6 @@ void ink(char color);
 
 void kbdclick1();
 
-void curset(char x,char y, char display, char display);
-void circle(char rayon);
 
 
 
diff --git a/libsrc/telestrat/ch376.s b/libsrc/telestrat/ch376.s
deleted file mode 100644 (file)
index 49aefad..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-
-; 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/graphics.s b/libsrc/telestrat/graphics.s
deleted file mode 100644 (file)
index e0b002d..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-; 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
deleted file mode 100644 (file)
index 7069d10..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-; 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/mym.s b/libsrc/telestrat/mym.s
deleted file mode 100644 (file)
index 009ccf5..0000000
+++ /dev/null
@@ -1,626 +0,0 @@
-        .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       
-
index c2a65d9faea4e36efe2fed17aba35a7d88bfddfd..6fe2fca73bd9267384220b1c17bafedb19b1f360 100644 (file)
@@ -3,13 +3,13 @@
 
 ;
 
-        ; 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
+    ; 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__
+    ; These symbols, also, come from the configuration file.
+    .import __AUTORUN__, __PROGFLAG__
+    .import __BASHEAD_START__, __MAIN_LAST__
 
 
 ; ------------------------------------------------------------------------
 
 .segment        "ORIXHDR"
 
-    .byte   $01, $00          
+    .byte   $01, $00                ; non C64 marker (same as o65 format)
 
-    .byte   "ori"
+    .byte   "ori"                   ; magic number
 
-    .byte   $01 ; version
-    .byte   $00,%00000000 ; 6502 only
-    .byte   $00,$00 ; Extends
-    .byte   $00,$00 ; OS
+    .byte   $01                     ; version of the header
+    .byte   $00,%00000000           ; 6502 only
+    .byte   $00,$00                 ; type of language
+    .byte   $00,$00                 ; OS version 
 
     .byte   $00                     ;  reserved
-    .byte   $00                     ; auto 
+    .byte   $00                     ;  auto or not
 
     .word   __BASHEAD_START__       ; Address of start of file
     .word   __MAIN_LAST__ - 1       ;  Address of end of file
diff --git a/libsrc/telestrat/oserrlist.s b/libsrc/telestrat/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/telestrat/oserror.s b/libsrc/telestrat/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/telestrat/print.s b/libsrc/telestrat/print.s
deleted file mode 100644 (file)
index 9942e3a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-; 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
-
-