diff --git a/cfg/atarixl-largehimem.cfg b/cfg/atarixl-largehimem.cfg index 895cfe430..511ec4645 100644 --- a/cfg/atarixl-largehimem.cfg +++ b/cfg/atarixl-largehimem.cfg @@ -33,10 +33,10 @@ MEMORY { # "main program" load chunk MAINHDR: file = %O, start = $0000, size = $0004; RAM: file = %O, define = yes, start = %S + - __LOWDATA_SIZE__, size = $D000 - - __STACKSIZE__ - - %S - - __LOWDATA_SIZE__; + __LOWDATA_SIZE__, size = $D000 - + __STACKSIZE__ - + %S - + __LOWDATA_SIZE__; # defines entry point into program TRAILER: file = %O, start = $0000, size = $0006; diff --git a/cfg/atarixl.cfg b/cfg/atarixl.cfg index ceb4141af..6a7cd2873 100644 --- a/cfg/atarixl.cfg +++ b/cfg/atarixl.cfg @@ -28,10 +28,10 @@ MEMORY { # "main program" load chunk MAINHDR: file = %O, start = $0000, size = $0004; RAM: file = %O, define = yes, start = %S + - __LOWDATA_SIZE__, size = $D000 - - __STACKSIZE__ - - %S - - __LOWDATA_SIZE__; + __LOWDATA_SIZE__, size = $D000 - + __STACKSIZE__ - + %S - + __LOWDATA_SIZE__; # defines entry point into program TRAILER: file = %O, start = $0000, size = $0006; diff --git a/libsrc/atari/ostype.s b/libsrc/atari/ostype.s index d2bf8888e..7248582a6 100644 --- a/libsrc/atari/ostype.s +++ b/libsrc/atari/ostype.s @@ -41,7 +41,7 @@ .export _get_ostype .include "atari.inc" - .include "romswitch.inc" + .include "romswitch.inc" .ifdef __ATARIXL__ @@ -50,8 +50,8 @@ .macro disable_rom_save_a pha - disable_rom - pla + disable_rom + pla .endmacro .else ; above atarixl, below atari diff --git a/libsrc/atari/save_area.inc b/libsrc/atari/save_area.inc index 3ec660203..ac433fded 100644 --- a/libsrc/atari/save_area.inc +++ b/libsrc/atari/save_area.inc @@ -6,8 +6,8 @@ ; Christian Groessler, chris@groessler.org, 2013 ; -.import SAVMSC_save -.import MEMTOP_save -.import APPMHI_save -.import RAMTOP_save -.import PORTB_save +.import SAVMSC_save +.import MEMTOP_save +.import APPMHI_save +.import RAMTOP_save +.import PORTB_save diff --git a/libsrc/atari/save_area.s b/libsrc/atari/save_area.s index 5495be8ca..e46f3631e 100644 --- a/libsrc/atari/save_area.s +++ b/libsrc/atari/save_area.s @@ -8,18 +8,18 @@ .ifdef __ATARIXL__ -.export SAVMSC_save -.export MEMTOP_save -.export APPMHI_save -.export RAMTOP_save -.export PORTB_save +.export SAVMSC_save +.export MEMTOP_save +.export APPMHI_save +.export RAMTOP_save +.export PORTB_save .segment "LOWDATA" -SAVMSC_save: .res 2 -MEMTOP_save: .res 2 -APPMHI_save: .res 2 -RAMTOP_save: .res 1 -PORTB_save: .res 1 +SAVMSC_save: .res 2 +MEMTOP_save: .res 2 +APPMHI_save: .res 2 +RAMTOP_save: .res 1 +PORTB_save: .res 1 .endif diff --git a/libsrc/atari/scrdev.s b/libsrc/atari/scrdev.s index c9d5b6919..2d6ff3e07 100644 --- a/libsrc/atari/scrdev.s +++ b/libsrc/atari/scrdev.s @@ -1,6 +1,6 @@ ; Name of the "screen" device - .export scrdev + .export scrdev .rodata diff --git a/libsrc/atari/shadow_ram_handlers.s b/libsrc/atari/shadow_ram_handlers.s index ddc7b0842..09a59ea76 100644 --- a/libsrc/atari/shadow_ram_handlers.s +++ b/libsrc/atari/shadow_ram_handlers.s @@ -4,27 +4,27 @@ ; Christian Groessler, chris@groessler.org, 2013 ; -DEBUG = 1 -CHKBUF = 1 ; check if bounce buffering is needed (bounce buffering is always done if set to 0) +DEBUG = 1 +CHKBUF = 1 ; check if bounce buffering is needed (bounce buffering is always done if set to 0) .ifdef __ATARIXL__ - SHRAM_HANDLERS = 1 + SHRAM_HANDLERS = 1 .include "atari.inc" - .include "save_area.inc" + .include "save_area.inc" .include "zeropage.inc" .include "romswitch.inc" - .import __CHARGEN_START__ + .import __CHARGEN_START__ - .export sram_init - .export KEYBDV_handler - .export CIO_handler - .export SIO_handler - .export SETVBV_handler + .export sram_init + .export KEYBDV_handler + .export CIO_handler + .export SIO_handler + .export SETVBV_handler -BUFSZ = 128 ; bounce buffer size -BUFSZ_SIO = 256 +BUFSZ = 128 ; bounce buffer size +BUFSZ_SIO = 256 .segment "INIT" @@ -33,45 +33,45 @@ BUFSZ_SIO = 256 sram_init: ; disable all interrupts - ldx #0 - stx NMIEN ; disable NMI - sei + ldx #0 + stx NMIEN ; disable NMI + sei ; disable ROMs - disable_rom + disable_rom ; setup interrupt vectors - lda #my_IRQ_han - sta $ffff + lda #my_IRQ_han + sta $ffff - lda #my_RESET_han - sta $fffd + lda #my_RESET_han + sta $fffd - lda #my_NMI_han - sta $fffb + lda #my_NMI_han + sta $fffb ; enable interrupts - cli - lda #$40 - sta NMIEN + cli + lda #$40 + sta NMIEN - rts + rts .segment "EXTZP" : zeropage -zpptr1: .res 2 +zpptr1: .res 2 .segment "LOWDATA" ; bounce buffers for CIO and SIO calls -bounce_buffer: .res BUFSZ_SIO +bounce_buffer: .res BUFSZ_SIO .segment "LOWCODE" @@ -86,71 +86,71 @@ bounce_buffer: .res BUFSZ_SIO ; aren't being called here because the vectors are pointing to their ; original ROM locations. -.macro int_wrap orgvec - .local ret - pha - enable_rom_quick - lda #>ret - pha - lda #ret + pha + lda # data too large for our buffers - ; CHANGE HERE TO SUPPORT BOUNCE BUFFERS > 255 BYTES - lda # data too large for our buffers + ; CHANGE HERE TO SUPPORT BOUNCE BUFFERS > 255 BYTES + lda # bounce buffer size? - bcs br_last ; no, last transfer, use remaining size + jsr cmp_orig_len_bnc_bufsz ; is transfer length > bounce buffer size? + bcs br_last ; no, last transfer, use remaining size - lda #>BUFSZ - sta ICBLH,x ; set data length - lda #BUFSZ + sta ICBLH,x ; set data length + lda # data too large for our buffers - ; CHANGE HERE TO SUPPORT BOUNCE BUFFERS > 255 BYTES - lda # data too large for our buffers + ; CHANGE HERE TO SUPPORT BOUNCE BUFFERS > 255 BYTES + lda # bounce buffer size? - bcs bw_last ; no, last transfer, use remaining size + jsr cmp_orig_len_bnc_bufsz ; is transfer length > bounce buffer size? + bcs bw_last ; no, last transfer, use remaining size - lda #>BUFSZ - sta ICBLH,x ; set data length - lda #BUFSZ + sta ICBLH,x ; set data length + lda #BUFSZ - sbc orig_len+1 - rts + sec + lda #BUFSZ + sbc orig_len+1 + rts ; copy data from bounce buffer into user buffer ; input: X - IOCB index ; zpptr1 - pointer to user buffer ; output: A - destroyed -; Y - 0 +; Y - 0 copy_to_user: - ldy ICBLL,x ; get # of bytes read (CHANGE HERE TO SUPPORT BOUNCE BUFFERS > 255 BYTES) - beq @copy_done -@copy: dey - lda bounce_buffer,y - sta (zpptr1),y - cpy #0 - bne @copy + ldy ICBLL,x ; get # of bytes read (CHANGE HERE TO SUPPORT BOUNCE BUFFERS > 255 BYTES) + beq @copy_done +@copy: dey + lda bounce_buffer,y + sta (zpptr1),y + cpy #0 + bne @copy @copy_done: - rts + rts ; copy data from user buffer into bounce buffer ; input: X - IOCB index ; zpptr1 - pointer to user buffer ; output: A - destroyed -; Y - 0 +; Y - 0 copy_from_user: - ldy ICBLL,x ; get # of bytes to write (CHANGE HERE TO SUPPORT BOUNCE BUFFERS > 255 BYTES) - beq @copy_done -@copy: dey - lda (zpptr1),y - sta bounce_buffer,y - cpy #0 - bne @copy + ldy ICBLL,x ; get # of bytes to write (CHANGE HERE TO SUPPORT BOUNCE BUFFERS > 255 BYTES) + beq @copy_done +@copy: dey + lda (zpptr1),y + sta bounce_buffer,y + cpy #0 + bne @copy @copy_done: - rts + rts ; copy ICBLL/ICBLH to 'orig_len' ; input: X - IOCB index ; output: A - destroyed iocblen_to_orig_len: - lda ICBLL,x - sta orig_len - lda ICBLH,x - sta orig_len+1 - rts + lda ICBLL,x + sta orig_len + lda ICBLH,x + sta orig_len+1 + rts ; copy ICBAL/ICBAH to 'orig_ptr' ; input: X - IOCB index ; output: A - destroyed iocbptr_to_orig_ptr: - lda ICBAL,x - sta orig_ptr - lda ICBAH,x - sta orig_ptr+1 - rts + lda ICBAL,x + sta orig_ptr + lda ICBAH,x + sta orig_ptr+1 + rts ; copy 'orig_ptr' to ICBAL/ICBAH ; input: X - IOCB index ; output: A - destroyed orig_ptr_to_iocbptr: - lda orig_ptr - sta ICBAL,x - lda orig_ptr+1 - sta ICBAH,x - rts + lda orig_ptr + sta ICBAL,x + lda orig_ptr+1 + sta ICBAH,x + rts ; restore original contents of ICBAL/ICBAH from 'zpptr1' ; input: X - IOCB index ; output: A - destroyed restore_icba: - lda zpptr1 - sta ICBAL,x - lda zpptr1+1 - sta ICBAH,x - rts + lda zpptr1 + sta ICBAL,x + lda zpptr1+1 + sta ICBAH,x + rts ; put bounce buffer address into ICBAL/ICBAH ; input: X - IOCB index ; output: A - destroyed bncbuf_to_iocb: - lda #bounce_buffer - sta ICBAH,x - rts + lda #bounce_buffer + sta ICBAH,x + rts ; copy file name pointed to by 'zpptr1' to 'bounce_buffer' @@ -667,15 +667,15 @@ bncbuf_to_iocb: ; output: Y - points to first invalid byte after file name ; A - destroyed copy_filename: - lda (zpptr1),y - sta bounce_buffer,y - beq copy_fn_done - iny - cmp #ATEOL - bne copy_filename - dey + lda (zpptr1),y + sta bounce_buffer,y + beq copy_fn_done + iny + cmp #ATEOL + bne copy_filename + dey copy_fn_done: - rts + rts ; write IOCB buffer address into zpptr1 @@ -683,13 +683,13 @@ copy_fn_done: ; output: Y - 0 (for setup_zpptr1_y0, else unchanged) ; A - destroyed setup_zpptr1_y0: - ldy #0 + ldy #0 setup_zpptr1: - lda ICBAL,x ; put buffer address into zp pointer - sta zpptr1 - lda ICBAH,x - sta zpptr1+1 - rts + lda ICBAL,x ; put buffer address into zp pointer + sta zpptr1 + lda ICBAH,x + sta zpptr1+1 + rts .if CHKBUF @@ -699,116 +699,116 @@ setup_zpptr1: ; output: Y - length ; A - destroyed get_fn_len: - lda (zpptr1),y - beq @done - iny - cmp #ATEOL - bne get_fn_len - dey + lda (zpptr1),y + beq @done + iny + cmp #ATEOL + bne get_fn_len + dey @done: - rts + rts chk_CIO_buf_fn2: - tya - pha - lda ICBLL,x - pha - lda ICBLH,x - pha - jsr setup_zpptr1_y0 - jsr get_fn_len - iny ; include terminating zero - bne fn_cont + tya + pha + lda ICBLL,x + pha + lda ICBLH,x + pha + jsr setup_zpptr1_y0 + jsr get_fn_len + iny ; include terminating zero + bne fn_cont chk_CIO_buf_fn: - tya - pha - lda ICBLL,x - pha - lda ICBLH,x - pha - jsr setup_zpptr1_y0 -fn_cont:jsr get_fn_len - iny ; include terminating zero - tya - sta ICBLL,x - lda #0 - sta ICBLH,x - jsr chk_CIO_buf - pla - sta ICBLH,x - pla - sta ICBLL,x - pla - tay - rts + tya + pha + lda ICBLL,x + pha + lda ICBLH,x + pha + jsr setup_zpptr1_y0 +fn_cont:jsr get_fn_len + iny ; include terminating zero + tya + sta ICBLL,x + lda #0 + sta ICBLH,x + jsr chk_CIO_buf + pla + sta ICBLH,x + pla + sta ICBLL,x + pla + tay + rts ; check if a CIO input/output buffer overlaps with ROM area (>= $C000) ; input: X - IOCB index -; ICBAL/ICBAH/ICBLL/ICBLH - buffer address and length +; ICBAL/ICBAH/ICBLL/ICBLH - buffer address and length ; output: CF - 1/0 for overlap/no overlap ; A - destroyed chk_CIO_buf: - lda ICBAH,x - cmp #$c0 - bcc @cont -@ret: + lda ICBAH,x + cmp #$c0 + bcc @cont +@ret: .ifdef DEBUG - jsr CIO_buf_noti + jsr CIO_buf_noti .endif - rts + rts -@cont: lda ICBAL,x - clc - adc ICBLL,x - lda ICBAH,x - adc ICBLH,x - bcs @ret ; ??? wraparound - cmp #$c0 +@cont: lda ICBAL,x + clc + adc ICBLL,x + lda ICBAH,x + adc ICBLH,x + bcs @ret ; ??? wraparound + cmp #$c0 .ifdef DEBUG - jsr CIO_buf_noti + jsr CIO_buf_noti .endif - rts + rts .ifdef DEBUG ; write to screen memory on 2nd line: ; pos 0: # of accesses without buffering ; pos 1: # of accesses with buffering CIO_buf_noti: - php - pha - tya - pha - bcc @nobuf + php + pha + tya + pha + bcc @nobuf - inc CIObnval_dobuf - jmp @cont + inc CIObnval_dobuf + jmp @cont -@nobuf: inc CIObnval_nobuf +@nobuf: inc CIObnval_nobuf -@cont: ldy #40 - lda CIObnval_nobuf - sta (SAVMSC),y - ldy #41 - lda CIObnval_dobuf - sta (SAVMSC),y +@cont: ldy #40 + lda CIObnval_nobuf + sta (SAVMSC),y + ldy #41 + lda CIObnval_dobuf + sta (SAVMSC),y - pla - tay - pla - plp - rts + pla + tay + pla + plp + rts CIObnval_dobuf: - .byte 0 + .byte 0 CIObnval_nobuf: - .byte 0 + .byte 0 .endif -.endif ; .if CHKBUF +.endif ; .if CHKBUF ;--------------------------------------------------------- @@ -818,36 +818,36 @@ CIObnval_nobuf: ; For other function we return NVALID status code. SIO_handler: - lda DCOMND ; get command - cmp #SIO_STAT - beq SIO_stat - cmp #SIO_READ - beq SIO_read - cmp #SIO_WRITE - beq SIO_write - cmp #SIO_WRITEV - beq SIO_write + lda DCOMND ; get command + cmp #SIO_STAT + beq SIO_stat + cmp #SIO_READ + beq SIO_read + cmp #SIO_WRITE + beq SIO_write + cmp #SIO_WRITEV + beq SIO_write - ; unhandled command - lda #NVALID -SIO_err:sta DSTATS - rts + ; unhandled command + lda #NVALID +SIO_err:sta DSTATS + rts ; SIO_STAT is always called with a low buffer (by the runtime) SIO_stat: - ; fall thru + ; fall thru SIO_call: - lda PORTB - sta cur_SIOV_PORTB - enable_rom - jsr SIOV_org - php - pha - disable_rom_val cur_SIOV_PORTB - pla - plp - rts + lda PORTB + sta cur_SIOV_PORTB + enable_rom + jsr SIOV_org + php + pha + disable_rom_val cur_SIOV_PORTB + pla + plp + rts ; SIO read handler @@ -856,50 +856,50 @@ SIO_call: SIO_read: .if CHKBUF - jsr chk_SIO_buf - bcc SIO_call + jsr chk_SIO_buf + bcc SIO_call .endif ; we only support transfers <= bounce buffer size - jsr cmp_sio_len_bnc_bufsz - bcs sio_read_len_ok + jsr cmp_sio_len_bnc_bufsz + bcs sio_read_len_ok - lda #DERROR ; don't know a better status code for this - bne SIO_err + lda #DERROR ; don't know a better status code for this + bne SIO_err sio_read_len_ok: - lda DBUFLO - sta zpptr1 ; remember destination buffer address - lda DBUFHI - sta zpptr1+1 + lda DBUFLO + sta zpptr1 ; remember destination buffer address + lda DBUFHI + sta zpptr1+1 - jsr bncbuf_to_dbuf ; put bounce buffer address to DBUFLO/DBUFHI + jsr bncbuf_to_dbuf ; put bounce buffer address to DBUFLO/DBUFHI - jsr SIO_call ; do the operation - pha - lda DSTATS ; get status - bmi sio_read_ret ; error + jsr SIO_call ; do the operation + pha + lda DSTATS ; get status + bmi sio_read_ret ; error - ; copy data to user buffer + ; copy data to user buffer sio_read_ok: - lda DBYTHI ; could be 1 for 256 bytes - beq srok1 - ldy #0 - beq srok2 -srok1: ldy DBYTLO -srok2: dey + lda DBYTHI ; could be 1 for 256 bytes + beq srok1 + ldy #0 + beq srok2 +srok1: ldy DBYTLO +srok2: dey sio_read_copy: - lda bounce_buffer,y - sta (zpptr1),y - dey - cpy #$ff - bne sio_read_copy + lda bounce_buffer,y + sta (zpptr1),y + dey + cpy #$ff + bne sio_read_copy sio_read_ret: - jsr orgbuf_to_dbuf + jsr orgbuf_to_dbuf - pla - rts ; success return + pla + rts ; success return ; SIO write handler @@ -908,44 +908,44 @@ sio_read_ret: SIO_write: .if CHKBUF - jsr chk_SIO_buf - bcc SIO_call + jsr chk_SIO_buf + bcc SIO_call .endif ; we only support transfers <= bounce buffer size - jsr cmp_sio_len_bnc_bufsz - bcs sio_write_len_ok + jsr cmp_sio_len_bnc_bufsz + bcs sio_write_len_ok - lda #DERROR ; don't know a better status code for this - jmp SIO_err + lda #DERROR ; don't know a better status code for this + jmp SIO_err sio_write_len_ok: - lda DBUFLO - sta zpptr1 ; get source buffer address - lda DBUFHI - sta zpptr1+1 + lda DBUFLO + sta zpptr1 ; get source buffer address + lda DBUFHI + sta zpptr1+1 - ; copy data from user buffer to bounce buffer - lda DBYTHI ; could be 1 for 256 bytes - beq swok1 - ldy #0 - beq swok2 -swok1: ldy DBYTLO -swok2: dey + ; copy data from user buffer to bounce buffer + lda DBYTHI ; could be 1 for 256 bytes + beq swok1 + ldy #0 + beq swok2 +swok1: ldy DBYTLO +swok2: dey sio_write_copy: - lda (zpptr1),y - sta bounce_buffer,y - dey - cpy #$ff - bne sio_write_copy + lda (zpptr1),y + sta bounce_buffer,y + dey + cpy #$ff + bne sio_write_copy - jsr bncbuf_to_dbuf ; put bounce buffer address to DBUFLO/DBUFHI + jsr bncbuf_to_dbuf ; put bounce buffer address to DBUFLO/DBUFHI - jsr SIO_call ; do the operation - pha - jsr orgbuf_to_dbuf - pla - rts + jsr SIO_call ; do the operation + pha + jsr orgbuf_to_dbuf + pla + rts ; check if SIO length is larger than bounce buffer size @@ -953,32 +953,32 @@ sio_write_copy: ; output: A - destroyed ; CF - 0/1 for larger/not larger cmp_sio_len_bnc_bufsz: - sec - lda #BUFSZ_SIO - sbc DBYTHI - rts + sec + lda #BUFSZ_SIO + sbc DBYTHI + rts ; put bounce buffer address into DBUFLO/DBUFHI ; input: (--) ; output: A - destroyed bncbuf_to_dbuf: - lda #bounce_buffer - sta DBUFHI - rts + lda #bounce_buffer + sta DBUFHI + rts ; put original buffer address into DBUFLO/DBUFHI ; input: zpptr1 - original pointer ; output: A - destroyed orgbuf_to_dbuf: - lda zpptr1 - sta DBUFLO - lda zpptr1+1 - sta DBUFHI - rts + lda zpptr1 + sta DBUFLO + lda zpptr1+1 + sta DBUFHI + rts .if CHKBUF @@ -989,113 +989,113 @@ orgbuf_to_dbuf: ; A - destroyed chk_SIO_buf: - lda DBUFHI - cmp #$c0 - bcc @cont + lda DBUFHI + cmp #$c0 + bcc @cont @ret: .ifdef DEBUG - jsr SIO_buf_noti + jsr SIO_buf_noti .endif - rts + rts -@cont: lda DBUFLO - clc - adc DBYTLO - lda DBUFHI - adc DBYTHI - bcs @ret ; ??? wraparound - cmp #$c0 +@cont: lda DBUFLO + clc + adc DBYTLO + lda DBUFHI + adc DBYTHI + bcs @ret ; ??? wraparound + cmp #$c0 .ifdef DEBUG - jsr SIO_buf_noti + jsr SIO_buf_noti .endif - rts + rts .ifdef DEBUG ; write to screen memory on 2nd line: ; pos 38: # of accesses without buffering ; pos 39: # of accesses with buffering SIO_buf_noti: - php - pha - tya - pha - bcc @nobuf + php + pha + tya + pha + bcc @nobuf - inc SIObnval_dobuf - jmp @cont + inc SIObnval_dobuf + jmp @cont -@nobuf: inc SIObnval_nobuf +@nobuf: inc SIObnval_nobuf -@cont: ldy #78 - lda SIObnval_nobuf - sta (SAVMSC),y - ldy #79 - lda SIObnval_dobuf - sta (SAVMSC),y +@cont: ldy #78 + lda SIObnval_nobuf + sta (SAVMSC),y + ldy #79 + lda SIObnval_dobuf + sta (SAVMSC),y - pla - tay - pla - plp - rts + pla + tay + pla + plp + rts SIObnval_dobuf: - .byte 0 + .byte 0 SIObnval_nobuf: - .byte 0 + .byte 0 .endif -.endif ; .if CHKBUF +.endif ; .if CHKBUF ;--------------------------------------------------------- KEYBDV_handler: - lda #>(kret-1) - pha - lda #<(kret-1) - pha - lda PORTB - sta cur_KEYBDV_PORTB - enable_rom - lda KEYBDV+5 + lda #>(kret-1) + pha + lda #<(kret-1) + pha + lda PORTB + sta cur_KEYBDV_PORTB + enable_rom + lda KEYBDV+5 pha lda KEYBDV+4 pha - rts ; call keyboard handler -kret: pha - disable_rom_val cur_KEYBDV_PORTB - pla - rts + rts ; call keyboard handler +kret: pha + disable_rom_val cur_KEYBDV_PORTB + pla + rts ;--------------------------------------------------------- SETVBV_handler: - pha - lda PORTB - sta cur_SETVBV_PORTB - enable_rom - pla - jsr SETVBV_org - php - pha - disable_rom_val cur_SETVBV_PORTB - pla - plp - rts + pha + lda PORTB + sta cur_SETVBV_PORTB + enable_rom + pla + jsr SETVBV_org + php + pha + disable_rom_val cur_SETVBV_PORTB + pla + plp + rts -CIO_a: .res 1 -CIO_x: .res 1 -CIO_y: .res 1 -CIO_p: .res 1 -cur_CIOV_PORTB: .res 1 -cur_SIOV_PORTB: .res 1 -cur_KEYBDV_PORTB: .res 1 -cur_SETVBV_PORTB: .res 1 -orig_ptr: .res 2 -orig_len: .res 2 -req_len: .res 2 -retlen: .res 2 +CIO_a: .res 1 +CIO_x: .res 1 +CIO_y: .res 1 +CIO_p: .res 1 +cur_CIOV_PORTB: .res 1 +cur_SIOV_PORTB: .res 1 +cur_KEYBDV_PORTB: .res 1 +cur_SETVBV_PORTB: .res 1 +orig_ptr: .res 2 +orig_len: .res 2 +req_len: .res 2 +retlen: .res 2 -.endif ; .ifdef __ATARIXL__ +.endif ; .ifdef __ATARIXL__ diff --git a/libsrc/atari/shadow_ram_prepare.s b/libsrc/atari/shadow_ram_prepare.s index be40baed3..bffabc059 100644 --- a/libsrc/atari/shadow_ram_prepare.s +++ b/libsrc/atari/shadow_ram_prepare.s @@ -90,7 +90,7 @@ sramprep: lda lodadr+1 sta RAMTOP - ; set APPMHI to MEMLO (+ 1 for sanity) + ; set APPMHI to MEMLO (+ 1 for sanity) lda MEMLO clc adc #1 @@ -104,7 +104,7 @@ sramprep: jsr findfreeiocb -.ifdef DEBUG ; only check in debug version, this shouldn't really happen(tm) +.ifdef DEBUG ; only check in debug version, this shouldn't really happen(tm) beq iocbok print_string "Internal error, no free IOCB!" jsr delay diff --git a/libsrc/atari/system_check.s b/libsrc/atari/system_check.s index b01311a4b..b1f823aad 100644 --- a/libsrc/atari/system_check.s +++ b/libsrc/atari/system_check.s @@ -11,11 +11,11 @@ ; Christian Groessler, chris@groessler.org, 2013 ; -DEBUG = 1 +DEBUG = 1 .ifdef __ATARIXL__ - .export syschk + .export syschk .import __SYSCHK_LOAD__ .import __STARTADDRESS__ ; needed by xlmemchk.inc @@ -24,36 +24,36 @@ DEBUG = 1 .macro print_string text - .local start, cont - jmp cont -start: .byte text, ATEOL -cont: ldx #0 ; channel 0 - lda #start - sta ICBAH,x - lda #<(cont - start) - sta ICBLL,x ; length - lda #>(cont - start) - sta ICBLH,x - lda #PUTCHR - sta ICCOM,x - jsr CIOV_org + .local start, cont + jmp cont +start: .byte text, ATEOL +cont: ldx #0 ; channel 0 + lda #start + sta ICBAH,x + lda #<(cont - start) + sta ICBLL,x ; length + lda #>(cont - start) + sta ICBLH,x + lda #PUTCHR + sta ICCOM,x + jsr CIOV_org .endmacro .macro print_string2 addr, len - ldx #0 ; channel 0 - lda #addr - sta ICBAH,x - lda #len - sta ICBLH,x - lda #PUTCHR - sta ICCOM,x - jsr CIOV_org + ldx #0 ; channel 0 + lda #addr + sta ICBAH,x + lda #len + sta ICBLH,x + lda #PUTCHR + sta ICCOM,x + jsr CIOV_org .endmacro @@ -72,74 +72,74 @@ cont: ldx #0 ; channel 0 .segment "SYSCHK" ; no XL machine -no_xl: print_string "This program needs an XL machine." - jmp fail +no_xl: print_string "This program needs an XL machine." + jmp fail ; entry point syschk: - lda $fcd8 ; from ostype.s + lda $fcd8 ; from ostype.s cmp #$a2 beq no_xl ; we have an XL machine, now check memory - lda RAMSIZ - cmp #$80 - bcs sys_ok + lda RAMSIZ + cmp #$80 + bcs sys_ok ; not enough memory - print_string "Not enough memory." -fail: jsr delay - jmp (DOSVEC) + print_string "Not enough memory." +fail: jsr delay + jmp (DOSVEC) sys_ok: - .include "xlmemchk.inc" ; calculate lowest address we will use when we move the screen buffer down + .include "xlmemchk.inc" ; calculate lowest address we will use when we move the screen buffer down - sec - lda MEMLO - sbc lowadr - lda MEMLO+1 - sbc lowadr+1 - bcc memlo_ok + sec + lda MEMLO + sbc lowadr + lda MEMLO+1 + sbc lowadr+1 + bcc memlo_ok ; load address was too low - print_string2 lmemerr_txt, lmemerr_txt_len - jsr delay ; long text takes longer to read, give user additional time - jmp fail + print_string2 lmemerr_txt, lmemerr_txt_len + jsr delay ; long text takes longer to read, give user additional time + jmp fail ; all is well(tm), launch the application memlo_ok: .ifdef DEBUG - print_string "Stage #1 OK" - jsr delay + print_string "Stage #1 OK" + jsr delay .endif - rts + rts lmemerr_txt: - .byte "Not enough memory to move screen", ATEOL - .byte "memory to low memory. Consider using", ATEOL - .byte "a higher load address.", ATEOL -lmemerr_txt_len = * - lmemerr_txt + .byte "Not enough memory to move screen", ATEOL + .byte "memory to low memory. Consider using", ATEOL + .byte "a higher load address.", ATEOL +lmemerr_txt_len = * - lmemerr_txt ; short delay -.proc delay +.proc delay - lda #10 -l: jsr delay1 - clc - sbc #0 - bne l - rts + lda #10 +l: jsr delay1 + clc + sbc #0 + bne l + rts -delay1: ldx #0 - ldy #0 -loop: dey - bne loop - dex - bne loop - rts +delay1: ldx #0 + ldy #0 +loop: dey + bne loop + dex + bne loop + rts .endproc @@ -154,4 +154,4 @@ end: .word INITAD+1 .word syschk -.endif ; .ifdef __ATARIXL__ +.endif ; .ifdef __ATARIXL__ diff --git a/libsrc/atari/xlmemchk.inc b/libsrc/atari/xlmemchk.inc index d2a079557..f8be1c137 100644 --- a/libsrc/atari/xlmemchk.inc +++ b/libsrc/atari/xlmemchk.inc @@ -9,12 +9,12 @@ ; by the screen memory afterwards. ; ; inputs: -; __STARTADDRESS__ - load address of the program +; __STARTADDRESS__ - load address of the program ; outputs: -; lodadr - (high byte only) value to -; write into RAMTOP -; lowadr - lowest address occupied by -; screen data +; lodadr - (high byte only) value to +; write into RAMTOP +; lowadr - lowest address occupied by +; screen data ; @@ -35,85 +35,85 @@ ; available memory, boundary crossing cannot happen. -SCRBUFSZ = (40 * 24) ; size of mode 0 screen buffer -DLSZ = 32 ; size of mode 0 display list +SCRBUFSZ = (40 * 24) ; size of mode 0 screen buffer +DLSZ = 32 ; size of mode 0 display list scrmemtst: ; subtract screen memory size from our load address - lda lodadr - sec - sbc #SCRBUFSZ - sta tstadr+1 + lda lodadr + sec + sbc #SCRBUFSZ + sta tstadr+1 ; check if a 4K boundary is crossed - lda lodadr+1 - and #$f0 - sta tmp - lda tstadr+1 - and #$f0 - cmp tmp - beq scrmemok + lda lodadr+1 + and #$f0 + sta tmp + lda tstadr+1 + and #$f0 + cmp tmp + beq scrmemok ; if lodadr is at an exact 4K boundary, it's still ok - lda lodadr+1 - and #$0f - beq scrmemok + lda lodadr+1 + and #$0f + beq scrmemok ; 4K boundary will be crossed, use this 4K boundary address as lodadr -al4k: lda lodadr+1 - and #$f0 - sta lodadr+1 - bne scrmemtst +al4k: lda lodadr+1 + and #$f0 + sta lodadr+1 + bne scrmemtst ; not reached .ifdef DEBUG .byte "XLMEMCHK:>" .endif -lodadr: .word __STARTADDRESS__ & $FF00 ; our program's load address, rounded down to page boundary -tstadr: .res 2 -lowadr: .res 2 -tmp: .res 1 +lodadr: .word __STARTADDRESS__ & $FF00 ; our program's load address, rounded down to page boundary +tstadr: .res 2 +lowadr: .res 2 +tmp: .res 1 ; subtract display list size from calculated screen address scrmemok: - lda tstadr - sec - sbc #DLSZ - sta lowadr+1 + lda tstadr + sec + sbc #DLSZ + sta lowadr+1 -.if 0 ; this cannot happen +.if 0 ; this cannot happen ; check if a 1K boundary is crossed - lda tstadr+1 - and #$fc - sta tmp - lda lowadr+1 - and #$fc - cmp tmp - bne al4k ; 1K boundary will be crossed, decrease lodadr + lda tstadr+1 + and #$fc + sta tmp + lda lowadr+1 + and #$fc + cmp tmp + bne al4k ; 1K boundary will be crossed, decrease lodadr .endif ; address of display list is ok ; decrease lowadr by two - lda lowadr - sec - sbc #2 - sta lowadr - bcs dec_cont - dec lowadr+1 + lda lowadr + sec + sbc #2 + sta lowadr + bcs dec_cont + dec lowadr+1 dec_cont: