44 lines
1.3 KiB
OpenEdge ABL
44 lines
1.3 KiB
OpenEdge ABL
; Shared display-duration epilogue for the Apple II viewers (HGR already on).
|
|
; WAITMODE 0 forever, 1 until a key, 2 about WAITSECS seconds.
|
|
; key and seconds exit to Applesoft BASIC ($E000 cold start), a real prompt with
|
|
; no DOS needed. The II and II+ have no timer, so seconds is a calibrated delay
|
|
; loop near 1 MHz. WAITSECS is clamped to 255 by the assembler.
|
|
|
|
#if WAITMODE == 0
|
|
awhang:
|
|
jmp awhang
|
|
#endif
|
|
|
|
#if WAITMODE == 1
|
|
awhang:
|
|
lda $c000 ; keyboard; bit7 set = a key is down
|
|
bpl awhang
|
|
bit $c010 ; clear strobe
|
|
lda $c051 ; switch to text so the BASIC prompt is visible
|
|
lda $c054 ; page 1
|
|
jmp $e000 ; Applesoft cold start
|
|
#endif
|
|
|
|
#if WAITMODE == 2
|
|
lda #WAITSECS
|
|
sta $fd ; seconds remaining
|
|
aw_o:
|
|
lda #$03 ; ~1 second = 3 * (256*256 inner) at ~1 MHz
|
|
sta $fc
|
|
aw_m:
|
|
ldx #$00
|
|
aw_x:
|
|
ldy #$00
|
|
aw_y:
|
|
dey
|
|
bne aw_y
|
|
dex
|
|
bne aw_x
|
|
dec $fc
|
|
bne aw_m
|
|
dec $fd
|
|
bne aw_o
|
|
lda $c051 ; switch to text so the BASIC prompt is visible
|
|
lda $c054 ; page 1
|
|
jmp $e000 ; Applesoft cold start
|
|
#endif
|