;============================== ; 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