; this file needs to be assembled with: ; cl65 -o newtitle.xex -t none newtitle.s ; It contains only an init routine, no run address. .include "atari.inc" ; where our screen was loaded (see newtitle.pl) screendata = $9000 ; homebrew atari xex header .word $ffff .word version .word end-1 ; needs to be above the BSS (see taipan.map). we'll place it right at ; the end of screendata. .org $a800 version: .incbin "ver.dat" help: .incbin "help.dat" helphitbl: .byte >version .byte >help .byte >(help+32) .byte >(help+64) .byte 0 helplotbl: .byte dlist sta SDLSTH ; switch to narrow playfield, enable screen lda #$21 sta SDMCTL ; clear any keypress that happened during loading lda #$ff sta CH ldx #0 ; X = index into bg color choices ldy #0 ; Y = index into text color choices ; wait for user to press a key wait4key: lda colorchoices,x sta COLOR2 lda textchoices,y sta COLOR1 lda CH cmp #$ff beq wait4key cmp #28 ; Escape key bne not_esc ; show next line of help stx FR1+1 ldx helpshowing inx loadhelp: lda helphitbl,x bne helpok ldx #0 beq loadhelp helpok: sta help_lms+1 lda helplotbl,x sta help_lms stx helpshowing ldx FR1+1 clc bcc x_ok not_esc: cmp #21 ; B key bne not_b dex bpl x_ok ldx #colorcount bne x_ok not_b: cmp #45 ; T key bne keyok dey bpl x_ok ldy #textcount x_ok: lda #$ff sta CH bne wait4key keyok: ; eat the keypress lda #$ff sta CH rts ; return to DOS (which loads the rest of the game) wait1jiffy: lda RTCLOK+2 wait: cmp RTCLOK+2 beq wait rts ; display list here dlist: .byte $70 ; 24 scanlines of blanks .byte $70 .byte $70 ; .byte $30 ; 4 more since image is only 184 lines tall .byte $0f | $40 ; LMS, BASIC mode 8 .word screendata .repeat 127 .byte $0f ; 127 more scanlines of mode 8 .endrepeat .byte $0f | $40 ; Hit 4K boundary, LMS again .word screendata+$1000 .repeat 55 .byte $0f ; 55 more scanlines of mode 8 .endrepeat ; .byte $30 ; blank 4 lines to match GR.8 (does it even matter?) .byte $02 | $40 ; LMS, 1 line of GR.0 for the version help_lms: .word version .byte $41 ; JVB, jump & wait for vblank .word dlist end: .word INITAD .word INITAD+1 .word start