mirror of
https://github.com/cc65/cc65.git
synced 2024-09-28 10:55:43 +00:00
untabify
This commit is contained in:
parent
c88e0818b4
commit
39a98f250b
@ -33,10 +33,10 @@ MEMORY {
|
|||||||
# "main program" load chunk
|
# "main program" load chunk
|
||||||
MAINHDR: file = %O, start = $0000, size = $0004;
|
MAINHDR: file = %O, start = $0000, size = $0004;
|
||||||
RAM: file = %O, define = yes, start = %S +
|
RAM: file = %O, define = yes, start = %S +
|
||||||
__LOWDATA_SIZE__, size = $D000 -
|
__LOWDATA_SIZE__, size = $D000 -
|
||||||
__STACKSIZE__ -
|
__STACKSIZE__ -
|
||||||
%S -
|
%S -
|
||||||
__LOWDATA_SIZE__;
|
__LOWDATA_SIZE__;
|
||||||
|
|
||||||
# defines entry point into program
|
# defines entry point into program
|
||||||
TRAILER: file = %O, start = $0000, size = $0006;
|
TRAILER: file = %O, start = $0000, size = $0006;
|
||||||
|
@ -28,10 +28,10 @@ MEMORY {
|
|||||||
# "main program" load chunk
|
# "main program" load chunk
|
||||||
MAINHDR: file = %O, start = $0000, size = $0004;
|
MAINHDR: file = %O, start = $0000, size = $0004;
|
||||||
RAM: file = %O, define = yes, start = %S +
|
RAM: file = %O, define = yes, start = %S +
|
||||||
__LOWDATA_SIZE__, size = $D000 -
|
__LOWDATA_SIZE__, size = $D000 -
|
||||||
__STACKSIZE__ -
|
__STACKSIZE__ -
|
||||||
%S -
|
%S -
|
||||||
__LOWDATA_SIZE__;
|
__LOWDATA_SIZE__;
|
||||||
|
|
||||||
# defines entry point into program
|
# defines entry point into program
|
||||||
TRAILER: file = %O, start = $0000, size = $0006;
|
TRAILER: file = %O, start = $0000, size = $0006;
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
.export _get_ostype
|
.export _get_ostype
|
||||||
|
|
||||||
.include "atari.inc"
|
.include "atari.inc"
|
||||||
.include "romswitch.inc"
|
.include "romswitch.inc"
|
||||||
|
|
||||||
.ifdef __ATARIXL__
|
.ifdef __ATARIXL__
|
||||||
|
|
||||||
@ -50,8 +50,8 @@
|
|||||||
|
|
||||||
.macro disable_rom_save_a
|
.macro disable_rom_save_a
|
||||||
pha
|
pha
|
||||||
disable_rom
|
disable_rom
|
||||||
pla
|
pla
|
||||||
.endmacro
|
.endmacro
|
||||||
|
|
||||||
.else ; above atarixl, below atari
|
.else ; above atarixl, below atari
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
; Christian Groessler, chris@groessler.org, 2013
|
; Christian Groessler, chris@groessler.org, 2013
|
||||||
;
|
;
|
||||||
|
|
||||||
.import SAVMSC_save
|
.import SAVMSC_save
|
||||||
.import MEMTOP_save
|
.import MEMTOP_save
|
||||||
.import APPMHI_save
|
.import APPMHI_save
|
||||||
.import RAMTOP_save
|
.import RAMTOP_save
|
||||||
.import PORTB_save
|
.import PORTB_save
|
||||||
|
@ -8,18 +8,18 @@
|
|||||||
|
|
||||||
.ifdef __ATARIXL__
|
.ifdef __ATARIXL__
|
||||||
|
|
||||||
.export SAVMSC_save
|
.export SAVMSC_save
|
||||||
.export MEMTOP_save
|
.export MEMTOP_save
|
||||||
.export APPMHI_save
|
.export APPMHI_save
|
||||||
.export RAMTOP_save
|
.export RAMTOP_save
|
||||||
.export PORTB_save
|
.export PORTB_save
|
||||||
|
|
||||||
.segment "LOWDATA"
|
.segment "LOWDATA"
|
||||||
|
|
||||||
SAVMSC_save: .res 2
|
SAVMSC_save: .res 2
|
||||||
MEMTOP_save: .res 2
|
MEMTOP_save: .res 2
|
||||||
APPMHI_save: .res 2
|
APPMHI_save: .res 2
|
||||||
RAMTOP_save: .res 1
|
RAMTOP_save: .res 1
|
||||||
PORTB_save: .res 1
|
PORTB_save: .res 1
|
||||||
|
|
||||||
.endif
|
.endif
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
; Name of the "screen" device
|
; Name of the "screen" device
|
||||||
|
|
||||||
.export scrdev
|
.export scrdev
|
||||||
|
|
||||||
.rodata
|
.rodata
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -90,7 +90,7 @@ sramprep:
|
|||||||
lda lodadr+1
|
lda lodadr+1
|
||||||
sta RAMTOP
|
sta RAMTOP
|
||||||
|
|
||||||
; set APPMHI to MEMLO (+ 1 for sanity)
|
; set APPMHI to MEMLO (+ 1 for sanity)
|
||||||
lda MEMLO
|
lda MEMLO
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
@ -104,7 +104,7 @@ sramprep:
|
|||||||
|
|
||||||
|
|
||||||
jsr findfreeiocb
|
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
|
beq iocbok
|
||||||
print_string "Internal error, no free IOCB!"
|
print_string "Internal error, no free IOCB!"
|
||||||
jsr delay
|
jsr delay
|
||||||
|
@ -11,11 +11,11 @@
|
|||||||
; Christian Groessler, chris@groessler.org, 2013
|
; Christian Groessler, chris@groessler.org, 2013
|
||||||
;
|
;
|
||||||
|
|
||||||
DEBUG = 1
|
DEBUG = 1
|
||||||
|
|
||||||
.ifdef __ATARIXL__
|
.ifdef __ATARIXL__
|
||||||
|
|
||||||
.export syschk
|
.export syschk
|
||||||
.import __SYSCHK_LOAD__
|
.import __SYSCHK_LOAD__
|
||||||
.import __STARTADDRESS__ ; needed by xlmemchk.inc
|
.import __STARTADDRESS__ ; needed by xlmemchk.inc
|
||||||
|
|
||||||
@ -24,36 +24,36 @@ DEBUG = 1
|
|||||||
|
|
||||||
|
|
||||||
.macro print_string text
|
.macro print_string text
|
||||||
.local start, cont
|
.local start, cont
|
||||||
jmp cont
|
jmp cont
|
||||||
start: .byte text, ATEOL
|
start: .byte text, ATEOL
|
||||||
cont: ldx #0 ; channel 0
|
cont: ldx #0 ; channel 0
|
||||||
lda #<start
|
lda #<start
|
||||||
sta ICBAL,x ; address
|
sta ICBAL,x ; address
|
||||||
lda #>start
|
lda #>start
|
||||||
sta ICBAH,x
|
sta ICBAH,x
|
||||||
lda #<(cont - start)
|
lda #<(cont - start)
|
||||||
sta ICBLL,x ; length
|
sta ICBLL,x ; length
|
||||||
lda #>(cont - start)
|
lda #>(cont - start)
|
||||||
sta ICBLH,x
|
sta ICBLH,x
|
||||||
lda #PUTCHR
|
lda #PUTCHR
|
||||||
sta ICCOM,x
|
sta ICCOM,x
|
||||||
jsr CIOV_org
|
jsr CIOV_org
|
||||||
.endmacro
|
.endmacro
|
||||||
.macro print_string2 addr, len
|
.macro print_string2 addr, len
|
||||||
|
|
||||||
ldx #0 ; channel 0
|
ldx #0 ; channel 0
|
||||||
lda #<addr
|
lda #<addr
|
||||||
sta ICBAL,x ; address
|
sta ICBAL,x ; address
|
||||||
lda #>addr
|
lda #>addr
|
||||||
sta ICBAH,x
|
sta ICBAH,x
|
||||||
lda #<len
|
lda #<len
|
||||||
sta ICBLL,x ; length
|
sta ICBLL,x ; length
|
||||||
lda #>len
|
lda #>len
|
||||||
sta ICBLH,x
|
sta ICBLH,x
|
||||||
lda #PUTCHR
|
lda #PUTCHR
|
||||||
sta ICCOM,x
|
sta ICCOM,x
|
||||||
jsr CIOV_org
|
jsr CIOV_org
|
||||||
|
|
||||||
.endmacro
|
.endmacro
|
||||||
|
|
||||||
@ -72,74 +72,74 @@ cont: ldx #0 ; channel 0
|
|||||||
.segment "SYSCHK"
|
.segment "SYSCHK"
|
||||||
|
|
||||||
; no XL machine
|
; no XL machine
|
||||||
no_xl: print_string "This program needs an XL machine."
|
no_xl: print_string "This program needs an XL machine."
|
||||||
jmp fail
|
jmp fail
|
||||||
|
|
||||||
; entry point
|
; entry point
|
||||||
syschk:
|
syschk:
|
||||||
lda $fcd8 ; from ostype.s
|
lda $fcd8 ; from ostype.s
|
||||||
cmp #$a2
|
cmp #$a2
|
||||||
beq no_xl
|
beq no_xl
|
||||||
|
|
||||||
; we have an XL machine, now check memory
|
; we have an XL machine, now check memory
|
||||||
lda RAMSIZ
|
lda RAMSIZ
|
||||||
cmp #$80
|
cmp #$80
|
||||||
bcs sys_ok
|
bcs sys_ok
|
||||||
|
|
||||||
; not enough memory
|
; not enough memory
|
||||||
print_string "Not enough memory."
|
print_string "Not enough memory."
|
||||||
fail: jsr delay
|
fail: jsr delay
|
||||||
jmp (DOSVEC)
|
jmp (DOSVEC)
|
||||||
|
|
||||||
|
|
||||||
sys_ok:
|
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
|
sec
|
||||||
lda MEMLO
|
lda MEMLO
|
||||||
sbc lowadr
|
sbc lowadr
|
||||||
lda MEMLO+1
|
lda MEMLO+1
|
||||||
sbc lowadr+1
|
sbc lowadr+1
|
||||||
bcc memlo_ok
|
bcc memlo_ok
|
||||||
|
|
||||||
; load address was too low
|
; load address was too low
|
||||||
print_string2 lmemerr_txt, lmemerr_txt_len
|
print_string2 lmemerr_txt, lmemerr_txt_len
|
||||||
jsr delay ; long text takes longer to read, give user additional time
|
jsr delay ; long text takes longer to read, give user additional time
|
||||||
jmp fail
|
jmp fail
|
||||||
|
|
||||||
; all is well(tm), launch the application
|
; all is well(tm), launch the application
|
||||||
memlo_ok:
|
memlo_ok:
|
||||||
.ifdef DEBUG
|
.ifdef DEBUG
|
||||||
print_string "Stage #1 OK"
|
print_string "Stage #1 OK"
|
||||||
jsr delay
|
jsr delay
|
||||||
.endif
|
.endif
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
lmemerr_txt:
|
lmemerr_txt:
|
||||||
.byte "Not enough memory to move screen", ATEOL
|
.byte "Not enough memory to move screen", ATEOL
|
||||||
.byte "memory to low memory. Consider using", ATEOL
|
.byte "memory to low memory. Consider using", ATEOL
|
||||||
.byte "a higher load address.", ATEOL
|
.byte "a higher load address.", ATEOL
|
||||||
lmemerr_txt_len = * - lmemerr_txt
|
lmemerr_txt_len = * - lmemerr_txt
|
||||||
|
|
||||||
|
|
||||||
; short delay
|
; short delay
|
||||||
.proc delay
|
.proc delay
|
||||||
|
|
||||||
lda #10
|
lda #10
|
||||||
l: jsr delay1
|
l: jsr delay1
|
||||||
clc
|
clc
|
||||||
sbc #0
|
sbc #0
|
||||||
bne l
|
bne l
|
||||||
rts
|
rts
|
||||||
|
|
||||||
delay1: ldx #0
|
delay1: ldx #0
|
||||||
ldy #0
|
ldy #0
|
||||||
loop: dey
|
loop: dey
|
||||||
bne loop
|
bne loop
|
||||||
dex
|
dex
|
||||||
bne loop
|
bne loop
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
@ -154,4 +154,4 @@ end:
|
|||||||
.word INITAD+1
|
.word INITAD+1
|
||||||
.word syschk
|
.word syschk
|
||||||
|
|
||||||
.endif ; .ifdef __ATARIXL__
|
.endif ; .ifdef __ATARIXL__
|
||||||
|
@ -9,12 +9,12 @@
|
|||||||
; by the screen memory afterwards.
|
; by the screen memory afterwards.
|
||||||
;
|
;
|
||||||
; inputs:
|
; inputs:
|
||||||
; __STARTADDRESS__ - load address of the program
|
; __STARTADDRESS__ - load address of the program
|
||||||
; outputs:
|
; outputs:
|
||||||
; lodadr - (high byte only) value to
|
; lodadr - (high byte only) value to
|
||||||
; write into RAMTOP
|
; write into RAMTOP
|
||||||
; lowadr - lowest address occupied by
|
; lowadr - lowest address occupied by
|
||||||
; screen data
|
; screen data
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
@ -35,85 +35,85 @@
|
|||||||
; available memory, boundary crossing cannot happen.
|
; available memory, boundary crossing cannot happen.
|
||||||
|
|
||||||
|
|
||||||
SCRBUFSZ = (40 * 24) ; size of mode 0 screen buffer
|
SCRBUFSZ = (40 * 24) ; size of mode 0 screen buffer
|
||||||
DLSZ = 32 ; size of mode 0 display list
|
DLSZ = 32 ; size of mode 0 display list
|
||||||
|
|
||||||
|
|
||||||
scrmemtst:
|
scrmemtst:
|
||||||
|
|
||||||
; subtract screen memory size from our load address
|
; subtract screen memory size from our load address
|
||||||
|
|
||||||
lda lodadr
|
lda lodadr
|
||||||
sec
|
sec
|
||||||
sbc #<SCRBUFSZ
|
sbc #<SCRBUFSZ
|
||||||
sta tstadr
|
sta tstadr
|
||||||
lda lodadr+1
|
lda lodadr+1
|
||||||
sbc #>SCRBUFSZ
|
sbc #>SCRBUFSZ
|
||||||
sta tstadr+1
|
sta tstadr+1
|
||||||
|
|
||||||
; check if a 4K boundary is crossed
|
; check if a 4K boundary is crossed
|
||||||
|
|
||||||
lda lodadr+1
|
lda lodadr+1
|
||||||
and #$f0
|
and #$f0
|
||||||
sta tmp
|
sta tmp
|
||||||
lda tstadr+1
|
lda tstadr+1
|
||||||
and #$f0
|
and #$f0
|
||||||
cmp tmp
|
cmp tmp
|
||||||
beq scrmemok
|
beq scrmemok
|
||||||
|
|
||||||
; if lodadr is at an exact 4K boundary, it's still ok
|
; if lodadr is at an exact 4K boundary, it's still ok
|
||||||
|
|
||||||
lda lodadr+1
|
lda lodadr+1
|
||||||
and #$0f
|
and #$0f
|
||||||
beq scrmemok
|
beq scrmemok
|
||||||
|
|
||||||
; 4K boundary will be crossed, use this 4K boundary address as lodadr
|
; 4K boundary will be crossed, use this 4K boundary address as lodadr
|
||||||
|
|
||||||
al4k: lda lodadr+1
|
al4k: lda lodadr+1
|
||||||
and #$f0
|
and #$f0
|
||||||
sta lodadr+1
|
sta lodadr+1
|
||||||
bne scrmemtst
|
bne scrmemtst
|
||||||
; not reached
|
; not reached
|
||||||
|
|
||||||
.ifdef DEBUG
|
.ifdef DEBUG
|
||||||
.byte "XLMEMCHK:>"
|
.byte "XLMEMCHK:>"
|
||||||
.endif
|
.endif
|
||||||
lodadr: .word __STARTADDRESS__ & $FF00 ; our program's load address, rounded down to page boundary
|
lodadr: .word __STARTADDRESS__ & $FF00 ; our program's load address, rounded down to page boundary
|
||||||
tstadr: .res 2
|
tstadr: .res 2
|
||||||
lowadr: .res 2
|
lowadr: .res 2
|
||||||
tmp: .res 1
|
tmp: .res 1
|
||||||
|
|
||||||
|
|
||||||
; subtract display list size from calculated screen address
|
; subtract display list size from calculated screen address
|
||||||
|
|
||||||
scrmemok:
|
scrmemok:
|
||||||
lda tstadr
|
lda tstadr
|
||||||
sec
|
sec
|
||||||
sbc #<DLSZ
|
sbc #<DLSZ
|
||||||
sta lowadr
|
sta lowadr
|
||||||
lda tstadr+1
|
lda tstadr+1
|
||||||
sbc #>DLSZ
|
sbc #>DLSZ
|
||||||
sta lowadr+1
|
sta lowadr+1
|
||||||
|
|
||||||
.if 0 ; this cannot happen
|
.if 0 ; this cannot happen
|
||||||
; check if a 1K boundary is crossed
|
; check if a 1K boundary is crossed
|
||||||
|
|
||||||
lda tstadr+1
|
lda tstadr+1
|
||||||
and #$fc
|
and #$fc
|
||||||
sta tmp
|
sta tmp
|
||||||
lda lowadr+1
|
lda lowadr+1
|
||||||
and #$fc
|
and #$fc
|
||||||
cmp tmp
|
cmp tmp
|
||||||
bne al4k ; 1K boundary will be crossed, decrease lodadr
|
bne al4k ; 1K boundary will be crossed, decrease lodadr
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
; address of display list is ok
|
; address of display list is ok
|
||||||
; decrease lowadr by two
|
; decrease lowadr by two
|
||||||
|
|
||||||
lda lowadr
|
lda lowadr
|
||||||
sec
|
sec
|
||||||
sbc #2
|
sbc #2
|
||||||
sta lowadr
|
sta lowadr
|
||||||
bcs dec_cont
|
bcs dec_cont
|
||||||
dec lowadr+1
|
dec lowadr+1
|
||||||
dec_cont:
|
dec_cont:
|
||||||
|
Loading…
Reference in New Issue
Block a user