D15mH EQU 17 D15mL EQU 250 COLS EQU PORTB ROWS EQU PORTA ROW0 EQU %11111110 ROW1 EQU %11111101 ROW2 EQU %11111011 ROW3 EQU %11110111 COLM EQU %00001111 DR15mH DS.B 1 DR15mL DS.B 1 PDELAY DS.B 1 KCODE0 DC.B '123A' KCODE1 DC.B '456B' KCODE2 DC.B '789C' KCODE3 DC.B '*0#D' ORG ROMStart Entry: LDS #RAMEnd+1 LDAA #$FF STAA DDRA STAA DDRT LDAA #$00 STAA DDRB K1: CLR ROWS LDAA COLS ANDA #COLM CMPA #COLM BNE K1 K2: CLR ROWS JSR DELAY LDAA COLS ANDA #COLM CMPA #COLM BNE OVER BRA K2 OVER: JSR DELAY LDAA COLS ANDA #COLM CMPA #COLM BNE OVER1 BRA K2 OVER1: LDAA #ROW0 STAA ROWS MOVB #$08,PDELAY P1: DEC PDELAY BNE P1 LDAA COLS CMPA #COLM BNE R0 LDAA #ROW1 STAA ROWS MOVB #$08,PDELAY P2 DEC PDELAY BNE P2 LDAA COLS CMPA #COLM BNE R1 LDAA #ROW2 STAA ROWS MOVB #$08,PDELAY P3 DEC PDELAY BNE P3 LDAA COLS CMPA #COLM BNE R2 LDAA #ROW3 STAA ROWS MOVB #$08,PDELAY P4 DEC PDELAY BNE P4 LDAA COLS CMPA #COLM BNE R3 BRA K2 R0: LDX #KCODE0 BRA FIND R1: LDX #KCODE1 BRA FIND R2: LDX #KCODE2 BRA FIND R3: LDX #KCODE3 BRA FIND FIND: ANDA #COLM SHIFT: LSRA BCC MATCH INX BRA SHIFT MATCH: LDAA 0,X STAA PTT LBRA K1 DELAY: LDAA #D15mH STAA DR15mH D2: LDAA #D15mL STAA DR15mL D1: DEC DR15mL NOP NOP BNE D1 DEC DR15mH BNE D2 RTS