10 PRINT"{CLS}PRESS ANY OF {RVS}W{RVSOFF},{RVS}A{RVSOFF},{RVS}S{RVSOFF},{RVS}D{RVSOFF}." 20 PRINT"{DOWN}KEYS DOWN:" 30 SYS {ASMSTART} PA = $E810 PB = $E812 VIDEO = $8000 SEI ;disable interrupts LOOP ;check W: row 3 col 0 LDY #0x20 LDA #3 LDX #%00000001 JSR KEYTEST BNE OUTW LDY #$97 ;screencode reverse W: $17 + $80 OUTW STY VIDEO+93 ;check A: row 4 col 0 LDY #0x20 LDA #4 LDX #%00000001 JSR KEYTEST BNE OUTA LDY #$81 OUTA STY VIDEO+95 ;check S: row 5 col 0 LDY #0x20 LDA #5 LDX #%00000001 JSR KEYTEST BNE OUTS LDY #$93 OUTS STY VIDEO+97 ;check D: row 4 col 1 LDY #0x20 LDA #4 LDX #%00000010 JSR KEYTEST BNE OUTD LDY #$84 OUTD STY VIDEO+99 ;check STOP key: row 9 col 4 LDA #9 LDX #%00010000 JSR KEYTEST BNE LOOP ;redo unless STOP CLI ;enable interrupts RTS ;and quit KEYTEST STA PA ;checks row in A against bit-vector in X TXA AND PB RTS ;zero-flag set for match .END