; initial load segment for taipan. intended to be a tiny (1-sector) ; routine that checks for the presence of BASIC or a cartridge, and ; aborts the load if found. ; cl65 -o checkmem.xex -t none checkmem.s .include "atari.inc" start = $0600 ; use page 6 for now .word $ffff .word start .word end-1 .org start msg: .incbin "cartmsg.dat" msglen = * - msg - 1 S: .byte "S:",0 init: lda RAMSIZ cmp #$c0 php sta RAMTOP ldx #6*$10 ; CLOSE #6 lda #CLOSE sta ICCOM,x jsr CIOV ; GRAPHICS 0 ldx #6*$10 ; IOCB #6 lda #OPEN sta ICCOM,x lda #$1c ; $c = read/write sta ICAX1,x lda #0 ; aux2 byte zero sta ICAX2,x lda #S sta ICBAH,x jsr CIOV plp bcc have_cart ; if ramtop is $c000 or higher, we're OK, just exit. rts have_cart: ; if ramtop is below $c000, we have a cartridge (or XL BASIC). ; print the "remove cart" message... lda #msg sta FR0+1 ldy #msglen msgloop: lda (FR0),y sta (SAVMSC),y dey bpl msgloop ; ...wait for a keystroke... wait4key: lda CH cmp #$ff beq wait4key ; ...and do a warmstart. jmp WARMSV end: .word INITAD .word INITAD+1 .word init