mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-06 03:04:43 +00:00
59 lines
1.1 KiB
ArmAsm
59 lines
1.1 KiB
ArmAsm
|
;==============================
|
||
|
; setup graphics for vapor lock
|
||
|
;==============================
|
||
|
vapor_lock:
|
||
|
|
||
|
; Clear Page0
|
||
|
lda #$0
|
||
|
sta DRAW_PAGE
|
||
|
lda #$44
|
||
|
jsr clear_gr
|
||
|
|
||
|
; Make screen half green
|
||
|
lda #$11
|
||
|
ldy #24
|
||
|
jsr clear_page_loop
|
||
|
|
||
|
|
||
|
;=====================================================
|
||
|
; attempt vapor lock
|
||
|
; by reading the "floating bus" we can see most recently
|
||
|
; written value of the display
|
||
|
; we look for $55 (which is the grey line)
|
||
|
;=====================================================
|
||
|
; See:
|
||
|
; Have an Apple Split by Bob Bishop
|
||
|
; Softalk, October 1982
|
||
|
|
||
|
; Challenges: each scan line scans 40 bytes.
|
||
|
; The blanking happens at the *beginning*
|
||
|
; So 65 bytes are scanned, starting at adress of the line - 25
|
||
|
|
||
|
; the scan takes 8 cycles, look for 4 repeats of the value
|
||
|
; to avoid false positive found if the horiz blanking is mirroring
|
||
|
; the line (max 3 repeats in that case)
|
||
|
|
||
|
vapor_lock_loop: ; first make sure we have all zeroes
|
||
|
LDA #$11
|
||
|
zxloop:
|
||
|
LDX #$04
|
||
|
wiloop:
|
||
|
CMP $C051
|
||
|
BNE zxloop
|
||
|
DEX
|
||
|
BNE wiloop
|
||
|
|
||
|
LDA #$44 ; now look for our border color (4 times)
|
||
|
zloop:
|
||
|
LDX #$04
|
||
|
qloop:
|
||
|
CMP $C051
|
||
|
BNE zloop
|
||
|
DEX
|
||
|
BNE qloop
|
||
|
|
||
|
rts
|
||
|
|
||
|
|
||
|
|