]> git.sur5r.net Git - cc65/commitdiff
Adding files for telemon30
authorjede <jede@oric.org>
Wed, 14 Dec 2016 20:22:10 +0000 (21:22 +0100)
committerjede <jede@oric.org>
Wed, 14 Dec 2016 20:22:10 +0000 (21:22 +0100)
36 files changed:
libsrc/Makefile
libsrc/common/fread.s
libsrc/telemon30/_open.s [new file with mode: 0644]
libsrc/telemon30/_read.s [new file with mode: 0644]
libsrc/telemon30/_scrsize.s [new file with mode: 0644]
libsrc/telemon30/ch376.s [new file with mode: 0644]
libsrc/telemon30/crt0.s [new file with mode: 0644]
libsrc/telemon30/ctype.s [new file with mode: 0644]
libsrc/telemon30/graphics.s [new file with mode: 0644]
libsrc/telemon30/keyboard.s [new file with mode: 0644]
libsrc/telemon30/mainargs.s [new file with mode: 0644]
libsrc/telemon30/mym.s [new file with mode: 0644]
libsrc/telemon30/orixhdr.s [new file with mode: 0644]
libsrc/telemon30/oserrlist.s [new file with mode: 0644]
libsrc/telemon30/oserror.s [new file with mode: 0644]
libsrc/telemon30/print.s [new file with mode: 0644]
libsrc/telemon30/sound.s [new file with mode: 0644]
libsrc/telemon30/sysuname.s [new file with mode: 0644]
libsrc/telemon30/write.s [new file with mode: 0644]
src/ar65.vcxproj
src/ca65.vcxproj
src/ca65/main.c
src/cc65.vcxproj
src/cc65/main.c
src/chrcvt65.vcxproj
src/cl65.vcxproj
src/co65.vcxproj
src/common.vcxproj
src/common/target.c
src/common/target.h
src/da65.vcxproj
src/grc65.vcxproj
src/ld65.vcxproj
src/od65.vcxproj
src/sim65.vcxproj
src/sp65.vcxproj

index 99f120f3afdcbf81e0e6588d2c4ca41a8634da4d..0342a8ca44a111e3dab7139a2a6659de1ca6df29 100644 (file)
@@ -30,7 +30,9 @@ TARGETS = apple2    \
           pce       \
           sim6502   \
           sim65c02  \
-          supervision
+          supervision\
+          telemon24\
+          telemon30
 
 DRVTYPES = emd \
            joy \
index 91d69298539d65fa5be31664da0ce46235177740..b87cc5cb454431473ad5a05c9e907479e4cfddfe 100644 (file)
 
 ; Read was ok, account for the pushed back character (if any).
 
-@L8:    add     pb
+@L8:                   
+               add     pb
         bcc     @L9
         inx
 
 ; Check for end of file.
 
-@L9:    cmp     #0                      ; Zero bytes read?
+@L9:   
+
+               cmp     #0                      ; Zero bytes read?
         bne     @L10
         cpx     #0
         bne     @L10
 ; Return the number of items successfully read. Since we've checked for
 ; bytes == 0 above, size cannot be zero here, so the division is safe.
 
-@L10:   jsr     pushax                  ; Push number of bytes read
+@L10:  
+
+
+               jsr     pushax                  ; Push number of bytes read
         ldy     #5
         jsr     ldaxysp                 ; Get size
         jsr     tosudivax               ; bytes / size -> a/x
diff --git a/libsrc/telemon30/_open.s b/libsrc/telemon30/_open.s
new file mode 100644 (file)
index 0000000..f308632
--- /dev/null
@@ -0,0 +1,44 @@
+        .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"
+               
+.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 flags
+
+; Get the filename from stack and parse it. Bail out if is not ok
+
+        jsr     popax           ; Get name
+
+               
+               BRK_TELEMON XOPEN
+               
+       ; jsr     fnparse         ; Parse it
+        ;tax
+        ;bne     oserror         ; Bail out if problem with name
+
+; Get a free file handle and remember it in tmp2
+
+      ;  jsr     freefd
+        ;lda     #EMFILE         ; Load error code
+        ;bcs     seterrno        ; Jump in case of errors
+        ;stx     tmp2
+;
+               
+               
+               rts
+.endproc
+               
+               
\ No newline at end of file
diff --git a/libsrc/telemon30/_read.s b/libsrc/telemon30/_read.s
new file mode 100644 (file)
index 0000000..8f7a20a
--- /dev/null
@@ -0,0 +1,31 @@
+;
+; Ullrich von Bassewitz, 2003-04-13
+;
+
+;
+
+        .export         _read
+        .import         popax
+        .importzp       ptr1, ptr2, ptr3, tmp1, tmp2
+
+        .include        "telemon30.inc"
+;              int read (int fd, void* buf, unsigned count);
+
+.proc   _read
+               ;jsr popax ; fp pointer don't care
+       sta tmp1 ; count
+       stx tmp2 ; count
+       jsr popax ; get buf
+       ;lda #$00
+       ;ldx #$a0
+       sta PTR_READ_DEST
+       stx PTR_READ_DEST+1
+       lda tmp1 ; 
+       ldy tmp2 ;
+       BRK_TELEMON XFREAD
+
+       rts
+
+.endproc
+
+
diff --git a/libsrc/telemon30/_scrsize.s b/libsrc/telemon30/_scrsize.s
new file mode 100644 (file)
index 0000000..a929f97
--- /dev/null
@@ -0,0 +1,19 @@
+;
+; 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
new file mode 100644 (file)
index 0000000..1b75c2b
--- /dev/null
@@ -0,0 +1,200 @@
+       .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
+       
+       .import         popax
+       .importzp       sp,tmp2,tmp3,tmp1
+       .include    "telemon30.inc"
+
+; CODE FOR CH376_SET_USB_MODE *************************************************
+
+CH376_SET_USB_MODE_CODE_USB_HOST_SOF_PACKAGE_AUTOMATICALLY := $06
+
+CH376_USB_INT_DISK_READ := $1d
+CH376_USB_INT_SUCCESS  := $14
+CH376_ERR_MISS_FILE    := $42
+       
+CH376_DATA             :=$340
+CH376_COMMAND  :=$341
+
+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_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_CLOSE               := $36
+CH376_BYTE_READ                        := $3A
+CH376_BYTE_RD_GO               := $3b
+CH376_BYTE_WRITE               := $3C
+CH376_DISK_CAPACITY    := $3E
+CH376_DISK_RD_GO               := $55
+
+
+
+; void ch376_set_file_name(char *filename)
+.proc _ch376_set_file_name
+       sta tmp1
+       stx tmp1+1
+       lda #CH376_SET_FILE_NAME ;$2f
+       sta CH376_COMMAND
+       ldy #0
+loop:
+       lda (tmp1),y ; replace by bufnom
+       beq end ; we reached 0 value
+       sta CH376_DATA
+       iny
+       cpy #13 ; because we don't manage longfilename shortname =11
+       bne loop
+end:   
+       sta CH376_DATA
+       rts
+.endproc 
+       
+; void _ch376_file_open();
+       
+.proc _ch376_file_open
+       lda #CH376_FILE_OPEN ; $32
+       sta CH376_COMMAND
+       jsr _ch376_wait_response
+       rts
+.endproc 
+
+       ;CMD_GET_FILE_SIZE
+       
+.proc _ch376_get_file_size
+       lda #CH376_GET_FILE_SIZE
+       sta CH376_COMMAND
+       lda #$68
+       sta CH376_DATA
+       ; store file leng
+       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
+       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
+       sta tmp1
+       lda #CH376_SET_USB_MODE ; $15
+       sta CH376_COMMAND
+       lda tmp1
+       sta CH376_DATA
+       rts
+.endproc 
+       
+       
+;      void ch376_set_bytes_write(int value);
+.proc _ch376_set_bytes_write
+       sta tmp1
+       stx tmp1+1
+       ldx #CH376_BYTE_WRITE
+       stx CH376_COMMAND
+       lda tmp1
+       sta CH376_DATA
+       lda tmp1+1
+       sta CH376_DATA
+       jsr _ch376_wait_response
+       rts
+.endproc       
+       
+.proc _ch376_set_bytes_read
+       ldx #CH376_BYTE_READ
+       stx CH376_COMMAND
+       sta CH376_DATA
+       sty 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
+       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 ; merci de laisser une valeur importante car parfois en mode non debug, le controleur ne répond pas tout de suite
+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 
+
diff --git a/libsrc/telemon30/crt0.s b/libsrc/telemon30/crt0.s
new file mode 100644 (file)
index 0000000..72bad5f
--- /dev/null
@@ -0,0 +1,101 @@
+;
+; 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
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/telemon30/graphics.s b/libsrc/telemon30/graphics.s
new file mode 100644 (file)
index 0000000..1d0beef
--- /dev/null
@@ -0,0 +1,51 @@
+        .export         _paper,_hires,_text,_circle,_curset, _switchOffCursor
+               .importzp sp,tmp2,tmp3,tmp1
+               
+               .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
+       sta HRSX
+       sty 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
new file mode 100644 (file)
index 0000000..974f841
--- /dev/null
@@ -0,0 +1,13 @@
+        .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
new file mode 100644 (file)
index 0000000..452d0d6
--- /dev/null
@@ -0,0 +1,137 @@
+;
+; 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
new file mode 100644 (file)
index 0000000..f387f9d
--- /dev/null
@@ -0,0 +1,626 @@
+        .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
new file mode 100644 (file)
index 0000000..8744e86
--- /dev/null
@@ -0,0 +1,36 @@
+;
+; 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 
+
+
+       .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
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/telemon30/oserror.s b/libsrc/telemon30/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/telemon30/print.s b/libsrc/telemon30/print.s
new file mode 100644 (file)
index 0000000..56c513f
--- /dev/null
@@ -0,0 +1,21 @@
+;
+; 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
new file mode 100644 (file)
index 0000000..2df18f4
--- /dev/null
@@ -0,0 +1,45 @@
+    .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
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/telemon30/write.s b/libsrc/telemon30/write.s
new file mode 100644 (file)
index 0000000..32965fe
--- /dev/null
@@ -0,0 +1,61 @@
+;
+; 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
+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
+
+
index b077134cea0cbeb94a4958c5ef3776be0d238580..003a5fa69c84096a59cc6319a9b5dee38feb2f45 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index 4e02fa2a9f69c1973d19b7b010ce9190315aebf1..fb7cf2e2625f65bd99396b9c925f6bbb01d90603 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index d6c364e4b7c16dda27b387c46b260556c8373ceb..4aa60f2f057eef5425532b606fd7f1f5780dd997 100644 (file)
@@ -226,10 +226,6 @@ static void SetSys (const char* Sys)
             CBMSystem ("__C64__");
             break;
 
-        case TGT_C65:
-            CBMSystem ("__C65__");
-            break;
-
         case TGT_VIC20:
             CBMSystem ("__VIC20__");
             break;
@@ -289,7 +285,15 @@ static void SetSys (const char* Sys)
 
         case TGT_ATMOS:
             NewSymbol ("__ATMOS__", 1);
-            break;
+            break; 
+
+        case TGT_TELEMON24:
+             NewSymbol ("__TELEMON24__", 1);
+             break;
+
+        case TGT_TELEMON30:
+             NewSymbol ("__TELEMON30__", 1);
+             break;
 
         case TGT_NES:
             NewSymbol ("__NES__", 1);
@@ -623,8 +627,7 @@ static void OptVersion (const char* Opt attribute ((unused)),
                         const char* Arg attribute ((unused)))
 /* Print the assembler version */
 {
-    fprintf (stderr, "%s V%s\n", ProgName, GetVersionAsString ());
-    exit(EXIT_SUCCESS);
+    fprintf (stderr, "ca65 V%s\n", GetVersionAsString ());
 }
 
 
index 1c1f993fe0960ae795d357acc3dba96d993513bf..aa85b09365f8a68d0d94b6fc9815fd08ebeb0fdd 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index afbec43d74872ee9040efeaa42aa61c9d2eb268e..f25a44d69e5f7fd55b10305a520b2c83998c37c7 100644 (file)
@@ -243,6 +243,14 @@ static void SetSys (const char* Sys)
             DefineNumericMacro ("__ATMOS__", 1);
             break;
 
+        case TGT_TELEMON24:
+            DefineNumericMacro ("__TELEMON24__", 1);
+            break;
+                                
+        case TGT_TELEMON30:
+            DefineNumericMacro ("__TELEMON30__", 1);
+            break;
+
         case TGT_NES:
             DefineNumericMacro ("__NES__", 1);
             break;
@@ -742,7 +750,7 @@ static void OptVersion (const char* Opt attribute ((unused)),
                         const char* Arg attribute ((unused)))
 /* Print the compiler version */
 {
-    fprintf (stderr, "%s V%s\n", ProgName, GetVersionAsString ());
+    fprintf (stderr, "cc65 V%s\n", GetVersionAsString ());
     exit (EXIT_SUCCESS);
 }
 
index 1daf7cae9d516f4a4431bb48d79c859c61769157..d120399d15d9538e211bdcb51c04104a9f26146c 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index 64c1126b17900bf43fcf741624c2044e945259a2..b6ceb161a5958cd36ce47c978fb8ca9a721065e4 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index c66c8aac8e36092e9b544d01e019c6279a7eb46f..89eed36e1d201e18131d6f0c0db21d9ad286d3a2 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index 053d2398181a70e9be7ddb1145fbaa73647ca256..c466d9712936028103691938dd151d4caeb2f5dc 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index 99a134c43bc7aa92be692a8085248435562d43ed..adbc080bf613b9fc9e1712ab2988b9e2c55f0815 100644 (file)
@@ -147,12 +147,11 @@ static const TargetEntry TargetMap[] = {
     {   "atari",        TGT_ATARI       },
     {   "atari5200",    TGT_ATARI5200   },
     {   "atarixl",      TGT_ATARIXL     },
-    {   "atmos",        TGT_ATMOS       },
+    {   "atmos",        TGT_ATMOS       },     
     {   "bbc",          TGT_BBC         },
     {   "c128",         TGT_C128        },
     {   "c16",          TGT_C16         },
     {   "c64",          TGT_C64         },
-    {   "c65",          TGT_C65         },
     {   "cbm510",       TGT_CBM510      },
     {   "cbm610",       TGT_CBM610      },
     {   "gamate",       TGT_GAMATE      },
@@ -171,6 +170,8 @@ static const TargetEntry TargetMap[] = {
     {   "sim6502",      TGT_SIM6502     },
     {   "sim65c02",     TGT_SIM65C02    },
     {   "supervision",  TGT_SUPERVISION },
+    {   "telemon24",    TGT_TELEMON24   },
+       {   "telemon30",    TGT_TELEMON30   },  
     {   "vic20",        TGT_VIC20       },
 };
 #define MAP_ENTRY_COUNT         (sizeof (TargetMap) / sizeof (TargetMap[0]))
@@ -199,6 +200,8 @@ 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  },      
     { "nes",            CPU_6502,       BINFMT_BINARY,      CTNone  },
     { "supervision",    CPU_65SC02,     BINFMT_BINARY,      CTNone  },
     { "lynx",           CPU_65SC02,     BINFMT_BINARY,      CTNone  },
@@ -206,7 +209,6 @@ static const TargetProperties PropertyTable[TGT_COUNT] = {
     { "sim65c02",       CPU_65C02,      BINFMT_BINARY,      CTNone  },
     { "pce",            CPU_HUC6280,    BINFMT_BINARY,      CTNone  },
     { "gamate",         CPU_6502,       BINFMT_BINARY,      CTNone  },
-    { "c65",            CPU_4510,       BINFMT_BINARY,      CTPET   },
 };
 
 /* Target system */
index 4115ae21a9d17593dab190bb8a47bacffa2e273e..4bc00225d1102a0da4d75835b8434e5cf5df536d 100644 (file)
@@ -73,6 +73,8 @@ typedef enum {
     TGT_GEOS_APPLE,
     TGT_LUNIX,
     TGT_ATMOS,
+       TGT_TELEMON24,
+       TGT_TELEMON30,  
     TGT_NES,
     TGT_SUPERVISION,
     TGT_LYNX,
@@ -80,7 +82,6 @@ typedef enum {
     TGT_SIM65C02,
     TGT_PCENGINE,
     TGT_GAMATE,
-    TGT_C65,
     TGT_COUNT                   /* Number of target systems */
 } target_t;
 
index 7810844dcbf79374e1c5f55a4d1fc0a95f40da5d..cf297fd32bbac25e30f23c1a755f9507bee542db 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index 211ad7cce23477a7d78494f14fd77faf79d5b129..afac0cce11649bf684b458a7dc65b7670097ae0c 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index acb9b424059d04e2f45c57a11d8b1ef1898f3210..cc5598aad6c226b3074c7638cd0aa837864ac255 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index c788ac96111cd4dc3d6ac6895fe98849bfcb63b0..2ace2600171fcf8b867fbb1570494835af944180 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index f87b4db6b68559f07037cfd305a6582d6b69f7e1..9ba0980baa1b360a9233b30321209311a9f2b942 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index 8db98346c1ded3cebc9dc75729365d8d52410941..6e7d992d48117e17b1ea6167b6fadc53a9be8a7a 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">