; 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" ; location sound code will look at to see whether sound ; is disabled (0 = enabled, !0 = disabled). If you ; change this here, change it in sounds.h also! sound_disabled = $06ff ; since we're changing the font and colors, we'll save the old ; ones here. If you change these, change them in taipan.c ; also. fontsave = $06fc color1save = $06fd color2save = $06fe ; where our screen was loaded (see newtitle.pl) ;screendata = $2400 ; homebrew atari xex header .word $ffff .word origin .word end-1 ; .org $a800 .org origin version: .incbin "ver.dat" help: .incbin "help.dat" helphitbl: .byte >version .byte >help .byte >(help+32) .byte >(help+64) .byte >(help+96) .byte 0 helplotbl: .byte or FF (inverse) sounddisp = help + 78 ; executable code here start: ; save old color registers and font addr. lda CHBAS sta fontsave lda COLOR1 sta color1save lda COLOR2 sta color2save ; setup color registers lda colorchoices sta COLOR2 ; text bg lda textchoices sta COLOR1 ; text fg ; turn off screen, in case vblank happens while we work lda #0 sta FR0 sta SDMCTL ; build our display list ; TODO, for now it's hardcoded (see 'dlist' below) ; wait for the next frame, to avoid graphics glitching jsr wait1jiffy ; setup our display list lda SDLSTL sta FR0 lda SDLSTH sta FR0+1 lda #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 showhelp: 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 #62 ; S key bne not_s jsr enable_disable_sound clc bcc showhelp not_s: 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) enable_disable_sound: lda #2 sta helpshowing lda sound_disabled eor #$01 sta sound_disabled beq now_on lda #166 ; inverse F screen code sta sounddisp sta sounddisp+1 rts now_on: lda #174 ; inverse N screen code sta sounddisp lda #128 ; inverse space screen code sta sounddisp+1 rts .out .sprintf("code ends at $%x", *) end: .word INITAD .word INITAD+1 .word start