; 2004 Sep 30 .PRINT LIST .CPU 300HN BUFSIZE .EQU 128 RAMFIX .EQU 0 ROMFIX .EQU 0 .SECTION BASIC,DATA,LOCATE=H'0 .DATA.W RESET .DATA.W RSV .DATA.W RSV .DATA.W RSV .DATA.W RSV .DATA.W RSV .DATA.W RSV .DATA.W NMI .DATA.W TRAPA0 .DATA.W TRAPA1 .DATA.W TRAPA2 .DATA.W TRAPA3 .DATA.W RSV ;ADBRK .DATA.W RSV ;CPUSLEEP .DATA.W RSV ;IRIRQ0 .DATA.W RSV ;IRIRQ1 .DATA.W RSV ;IRIRQ2 .DATA.W RSV ;IRIRQ3 .DATA.W RSV ;IRWKP .DATA.W TIMERA ;TIMERA .DATA.W RSV .DATA.W RSV ;TIMERW .DATA.W RSV ;TIMERV .DATA.W RSV ;SCI_A ;SCI3 .DATA.W RSV ;IIC .DATA.W RSV ;ADEND .SECTION MAIN,CODE,LOCATE=H'34 RESET: MOV.L #STACK,SP ; Set stack pointer MOV.W #LWORD TEXTRAM,R3 BSR ROMRAM:16 ; Set upper address MOV.W R3,@OTOP MOV.W R3,@OBTM MOV.W #0,R3 MOV.W R3,@ZERO ANDC #H'7F,CCR BSR SCI_INIT:16 ; Initialize IO BSR TIMSET:16 TRAPA #0 ; Hello message MOV.W @H'4000,R0 ; Check ROM on program CMP.W #H'5555,R0 BEQ PLOAD:16 ; START: MOV.L #STACK,SP BSR CRLF:16 MOV.W #LWORD OKMES,R4 SUB R0L,R0L BSR MSGP:16 MOV.W #LWORD ZERO,R3 MOV.W R3,@CLABL MOV.W #0,R3 MOV.W R3,@FCNTR MOV.W R3,@RSTCK EDITR: MOV.B #H'3E,R0L BSR GETL:16 PUSH.W R2 MOV.W #LWORD LBUF,R2 BSR GINT:16 BSR SKPBL:16 POP.W R1 CMP.W #0,R3 BEQ KWCPR:16 INSRT: DEC.W #1,R2 MOV.B R3L,@R2 DEC.W #1,R2 MOV.B R3H,@R2 PUSH.W R1 PUSH.W R2 MOV.W R1,R0 SUB.W R2,R0 PUSH.W R0 BSR SRCH:16 STC.B CCR,R6L PUSH.W R2 LDC.B R6L,CCR BNE MOVE:16 PUSH.W R2 BSR SKIPL:16 POP.W R1 MOV.W @OBTM,R3 BSR TRNSF:16 MOV.W R1,R3 MOV.W R3,@OBTM MOVE: POP.W R1 MOV.W @OBTM,R3 POP.W R0 PUSH.W R3 CMP.B #3,R0L BEQ START:16 ADD.W R0,R3 MOV.W #LWORD VTOP,R2 CMP.W R2,R3 BCC ERSRY:16 MOV.W R3,@OBTM POP.W R2 BSR TR2:16 POP.W R2 POP.W R3 BSR TRNSF:16 BRA EDITR RETSUB: RTS ; ; GETL: MOV.W #LWORD RAMFIX,E5 MOV.W #LWORD LBUF+BUFSIZE,R5 BSR PUT:16 MOV.W #LWORD LBUF,R2 MOV.W R2,R6 GETL1: BSR BREAK:16 BEQ GETL1 CMP.B #H'A,R0L BEQ GETL1 CMP.B #8,R0L BEQ CRUB:16 CMP.B #0,R0L BEQ GETL1 BSR PUT:16 MOV.B R0L,@R2 INC.W #1,R2 CMP.B #H'0D,R0L BEQ RETSUB:16 CMP.W R2,R5 BNE GETL1 CRUB: CMP.W R2,R6 BEQ GETL1 DEC.W #1,R2 MOV.B #8,R0L BSR PUT:16 BRA GETL1 ; SRCH: BTST.B #7,R3H BNE ERHOW:16 MOV.W @OTOP,R2 SRCH1: MOV.W @OBTM,R5 DEC.W #1,R5 CMP.W R2,R5 BCS RETSUB:16 MOV.B @R2,R4H MOV.B @(1,R2),R4L CMP.W R3,R4 BCS SKIPL:16 RTS ; SKIPL: INC.W #1,R2 SKPL1: INC.W #1,R2 SKPL2: MOV.B @R2,R0L CMP.B #H'D,R0L BNE SKPL1 INC.W #1,R2 BRA SRCH1 ; TRNSF: MOV.W #H'FFFF,E0 TRNS1: CMP.W R2,R3 BEQ RETSUB:16 MOV.B @R2,R0L MOV.B R0L,@R1 INC.W #1,R2 INC.W #1,R1 BRA TRNS1 ; TR2: MOV.W #H'FFFF,E0 TR1: CMP.W R2,R1 BEQ RETSUB:16 DEC.W #1,R2 DEC.W #1,R3 MOV.B @R2,R0L MOV.B R0L,@R3 BRA TR1 ; ; ; KWCPR: MOV.W #LWORD CMDKW,R5 MOV.W #LWORD CMDAD,R4 NXTKW: MOV.W #RAMFIX,E2 MOV.W #ROMFIX,E4 MOV.W #ROMFIX,E5 BSR SKPBL:16 NXTK1: MOV.W R2,R6 KWC1: MOV.B @R2+,R0L MOV.B @R5+,R0H CMP.B R0H,R0L BEQ KWC1 CMP.B #0,R0H BEQ EXEQT KWSK1: MOV.B @R5+,R0H BNE KWSK1 MOV.B @R5,R0H BEQ TBLEND INC.W #2,R4 MOV.W R6,R2 BRA NXTK1 ; EXEQT: MOV.W @R4,R5 DEC.W #1,R2 JMP @ER5 TBLEND: INC.W #2,R4 MOV.W @R4,R5 MOV.W R6,R2 JMP @ER5 ; CMDKW: .SDATA "LIST"<0> .SDATA "RUN"<0> .SDATA "NEW"<0> .SDATA "DUMP"<0> STMKW: .SDATA "LET"<0> .SDATA "GOTO"<0> .SDATA "GOSUB"<0> ; .SDATA "RETURN"<0> .SDATA "IF"<0> .SDATA "FOR"<0> .SDATA "NEXT"<0> .SDATA "MS"<0> .SDATA "SEC"<0> .SDATA "MIN"<0> .SDATA "HOR"<0> .SDATA "DAY"<0> .SDATA "REM"<0> .SDATA "INPUT"<0> .SDATA "PRINT"<0> .SDATA "STOP"<0> .SDATA "TIM"<0> .SDATA "OP"<0> .SDATA "IR"<0> .SDATA "LE"<0> .SDATA "?"<0> .SDATA "VER"<0> .DATA.B 0 .DATA.B 0 .DATA.B 0 CMDAD: .DATA.W LWORD LIST .DATA.W LWORD RUN .DATA.W LWORD NEW .DATA.W LWORD DUMP STMAD: .DATA.W LWORD LET .DATA.W LWORD GOTO .DATA.W LWORD GOSUB .DATA.W LWORD RETRN .DATA.W LWORD IFSTM .DATA.W LWORD FOR .DATA.W LWORD NEXT .DATA.W LWORD SETMS .DATA.W LWORD SETSEC .DATA.W LWORD SETMIN .DATA.W LWORD SETHOR .DATA.W LWORD SETDAY .DATA.W LWORD REM .DATA.W LWORD INPUT .DATA.W LWORD PRINT .DATA.W LWORD STOP .DATA.W LWORD TIMCMD .DATA.W LWORD OPCMD .DATA.W LWORD CMDIRQ .DATA.W LWORD CMDLED .DATA.W LWORD HLPHLP .DATA.W LWORD HLPVER .DATA.W LWORD LETDF ; OPCMD: MOV.W #LWORD OPOP,R5 MOV.W #LWORD OPOPAD,R4 BRA NXTKW:16 OPOP: .SDATA "D1"<0> .SDATA "D2"<0> .SDATA "D5"<0> .SDATA "D7"<0> .SDATA "D8"<0> .SDATA "U1"<0> .SDATA "U5"<0> .SDATA "1"<0> .SDATA "2"<0> .SDATA "5"<0> .SDATA "7"<0> .SDATA "8"<0> .DATA.B 0 .DATA.B 0 .DATA.B 0 OPOPAD: .DATA.W LWORD OPD1 .DATA.W LWORD OPD2 .DATA.W LWORD OPD5 .DATA.W LWORD OPD7 .DATA.W LWORD OPD8 .DATA.W LWORD OPU1 .DATA.W LWORD OPU5 .DATA.W LWORD OP1 .DATA.W LWORD OP2 .DATA.W LWORD OP5 .DATA.W LWORD OP7 .DATA.W LWORD OP8 .DATA.W LWORD ERWHT ; CMDIRQ: MOV.W #LWORD CMIRQTL,R5 MOV.W #LWORD CMIRQAD,R4 BRA NXTKW:16 CMIRQTL: .SDATA "Q0"<0> ; IRQ0 .SDATA "Q1"<0> ; IRQ1 .SDATA "Q2"<0> ; IRQ2 .SDATA "Q3"<0> ; IRQ3 .SDATA "Q4"<0> ; IRQ4 .SDATA "Q5"<0> ; IRQ5 .SDATA "Q"<0> ; IRQ .SDATA "STP0"<0> ; IRSTP0 .SDATA "STP1"<0> ; .SDATA "STP2"<0> ; .SDATA "STP3"<0> ; .SDATA "STP4"<0> ; .SDATA "STP5"<0> ; .DATA.B 0 .DATA.B 0 CMIRQAD: .DATA.W LWORD CMIRQ0 .DATA.W LWORD CMIRQ1 .DATA.W LWORD CMIRQ2 .DATA.W LWORD CMIRQ3 .DATA.W LWORD CMIRQ4 .DATA.W LWORD CMIRQ5 .DATA.W LWORD CMIRQ .DATA.W LWORD CMSTP0 .DATA.W LWORD CMSTP1 .DATA.W LWORD CMSTP2 .DATA.W LWORD CMSTP3 .DATA.W LWORD CMSTP4 .DATA.W LWORD CMSTP5 .DATA.W LWORD ERWHT ; CMDLED: MOV.W #LWORD LEDOP,R5 MOV.W #LWORD LEDOPAD,R4 BRA NXTKW:16 LEDOP: .SDATA "DINT"<0> .SDATA "DSTP"<0> .SDATA "D"<0> .DATA.B 0 .DATA.B 0 LEDOPAD: .DATA.W LWORD LEDINT .DATA.W LWORD LEDSTP .DATA.W LWORD LEDDATA .DATA.W LWORD ERWHT ; ; SKPBL: MOV.B @R2,R0L CMP.B #H'20,R0L BNE RETSUB:16 INC.W #1,R2 BRA SKPBL:16 ; NEW: BSR TSCR2:16 MOV.W @OTOP,R3 MOV.W R3,@OBTM STOP: BSR TSCR2:16 BRA START:16 ; CMIRQ: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE LERR:16 INC.W #1,R2 BSR EEXPR:16 MOV.W R3,@EVIRQ BRA ENDL:16 ; CMIRQ0: BSR EEXPR:16 MOV.W R3,@ADIRQ0 XOR.B R3L,R3L ;MOV.B R3L,@P8DDR ;MOV.B @ISCR,R3L OR.B #1,R3L ;MOV.B R3L,@ISCR ;MOV.B @IER,R3L OR.B #1,R3L ;MOV.B R3L,@IER BRA ENDL:16 ; CMSTP0: MOV.W #0,R3 MOV.W R3,@ADIRQ0 ;MOV.B @IER,R3L AND.B #H'FF,R3L ;MOV.B R3L,@IER BRA ENDL:16 ; IRIRQ0: PUSH.W R0 PUSH.W R1 MOV.W #H'FFFF,E0 MOV.W @MS,R0 INC.W #1,R0 MOV.W @ADIRQ0,R1 CMP.W R1,R0 BNE ir9 MOV.W @SEC,R0 INC.W #1,R0 MOV.W R0,@SEC CMP.W #60,R0 BNE ir8 MOV.W @MIN,R0 INC.W #1,R0 MOV.W R0,@MIN CMP.W #60,R0 BNE ir77 MOV.W @HOR,R0 INC.W #1,R0 MOV.W R0,@HOR CMP.W #24,R0 BNE ir66 MOV.W @DAY,R0 INC.W #1,R0 MOV.W R0,@DAY XOR.W R0,R0 MOV.W R0,@HOR MOV.W R0,@MIN MOV.W R0,@SEC MOV.W @ADJDAY,R0 MOV.W R0,@MS POP.W R1 POP.W R0 RTE ir8: XOR.W R0,R0 ir9: MOV.W R0,@MS POP.W R1 POP.W R0 RTE ir77: XOR.W R0,R0 MOV.W R0,@SEC MOV.W @ADJMIN,R0 MOV.W R0,@MS POP.W R1 POP.W R0 RTE ir66: XOR.W R0,R0 MOV.W R0,@MIN MOV.W R0,@SEC MOV.W @ADJHOR,R0 MOV.W R0,@MS POP.W R1 POP.W R0 RTE ; CMIRQ1: BSR EEXPR:16 MOV.W R3,@ADIRQ1 XOR.W R3,R3 ;MOV.B R3L,@P8DDR ;MOV.B @ISCR,R3L OR.B #2,R3L ;MOV.B R3L,@ISCR ;MOV.B @IER,R3L OR.B #2,R3L ;MOV.B R3L,@IER BRA ENDL:16 ; CMSTP1: MOV.W #0,R3 MOV.W R3,@ADIRQ1 ;MOV.B @IER,R3L AND.B #H'FD,R3L ;MOV.B R3L,@IER BRA ENDL:16 ; IRIRQ1: PUSH.W R3 MOV.W #H'FFFF,E3 ;MOV.B @ISR,R3L MOV.B #H'0,R3L ;MOV.B R3L,@ISR MOV.W @ADIRQ1,R3 MOV.W R3,@EVIRQ POP.W R3 RTE ; CMIRQ2: BSR EEXPR:16 MOV.W R3,@ADIRQ2 XOR.W R3,R3 ;MOV.B R3L,@P8DDR ;MOV.B @ISCR,R3L OR.B #4,R3L ;MOV.B R3L,@ISCR ;MOV.B @IER,R3L OR.B #4,R3L ;MOV.B R3L,@IER BRA ENDL:16 ; CMSTP2: MOV.W #0,R3 MOV.W R3,@ADIRQ2 ;MOV.B @IER,R3L AND.B #H'FB,R3L ;MOV.B R3L,@IER BRA ENDL:16 ; IRIRQ2: PUSH.W R3 MOV.W #H'FFFF,E3 ;MOV.B @ISR,R3L MOV.B #H'0,R3L ;MOV.B R3L,@ISR MOV.W @ADIRQ2,R3 MOV.W R3,@EVIRQ POP.W R3 RTE ; CMIRQ3: BSR EEXPR:16 MOV.W R3,@ADIRQ3 XOR.W R3,R3 ;MOV.B R3L,@P8DDR ;MOV.B @ISCR,R3L OR.B #8,R3L ;MOV.B R3L,@ISCR ;MOV.B @IER,R3L OR.B #8,R3L ;MOV.B R3L,@IER BRA ENDL:16 ; CMSTP3: MOV.W #0,R3 MOV.W R3,@ADIRQ3 ;MOV.B @IER,R3L AND.B #H'F7,R3L ;MOV.B R3L,@IER BRA ENDL:16 ; IRIRQ3: PUSH.W R3 MOV.W #H'FFFF,E3 ;MOV.B @ISR,R3L MOV.B #H'0,R3L ;MOV.B R3L,@ISR MOV.W @ADIRQ3,R3 MOV.W R3,@EVIRQ POP.W R3 RTE ; CMIRQ4: BSR EEXPR:16 MOV.W R3,@ADIRQ4 XOR.W R3,R3 ;MOV.B R3L,@P8DDR ;MOV.B @ISCR,R3L OR.B #H'10,R3L ;MOV.B R3L,@ISCR ;MOV.B @IER,R3L OR.B #H'10,R3L ;MOV.B R3L,@IER BRA ENDL:16 ; CMSTP4: MOV.W #0,R3 MOV.W R3,@ADIRQ4 ;MOV.B @IER,R3L AND.B #H'FE,R3L ;MOV.B R3L,@IER BRA ENDL:16 ; IRIRQ4: PUSH.W R3 MOV.W #H'FFFF,E3 ;MOV.B @ISR,R3L MOV.B #H'0,R3L ;MOV.B R3L,@ISR MOV.W @ADIRQ4,R3 MOV.W R3,@EVIRQ POP.W R3 RTE ; CMIRQ5: BRA ENDL:16 ; CMSTP5: BRA ENDL:16 ; IRIRQ5: RTE ; GOSUB: BSR PSHV:16 BSR EEXPR:16 PUSH.W R2 BSR SRCH:16 BNE ERHW1:16 MOV.W @CLABL,R3 PUSH.W R3 MOV.W @RSTCK,R3 PUSH.W R3 MOV.W #0,R3 MOV.W R3,@FCNTR MOV.W R7,@RSTCK BRA RUN2:16 ; RETRN: BSR TSCR2:16 MOV.W @RSTCK,R3 OR.W R3,R3 BEQ ERWHT:16 MOV.W R3,R7 POP.W R3 MOV.W R3,@RSTCK POP.W R3 MOV.W R3,@CLABL POP.W R2 BSR POPV:16 BRA ENDL:16 ; PSHV: MOV.W #LWORD TMSTK,R3 POP.W R1 CMP.W R3,R7 BCS ERSRY:16 MOV.W @FCNTR,R3 OR.W R3,R3 BEQ NPSH:16 MOV.W @FOBJ,R3 PUSH.W R3 MOV.W @FLABL,R3 PUSH.W R3 MOV.W @FTOV,R3 PUSH.W R3 MOV.W @FSTPV,R3 PUSH.W R3 MOV.W @FCNTR,R3 NPSH: PUSH.W R3 PUSH.W R1 MOV.W #RAMFIX,E1 RTS ; POPV: POP.W R1 POP.W R3 MOV.W R3,@FCNTR OR.W R3,R3 BEQ NPOP:16 POP.W R3 MOV.W R3,@FSTPV POP.W R3 MOV.W R3,@FTOV POP.W R3 MOV.W R3,@FLABL POP.W R3 MOV.W R3,@FOBJ NPOP: PUSH.W R1 MOV.W #RAMFIX,E1 RTS ; IFSTM: BSR EEXPR:16 OR.W R3,R3 BNE NXTGO:16 REM: MOV.W #0,R3 BSR SKPL2:16 BCC RUN2:16 BRA START:16 ; FOR: BSR PSHV:16 BSR LTSUB:16 MOV.W R3,@FCNTR MOV.W #LWORD KWTO,R5 MOV.W #LWORD KWTOAD,R4 BRA NXTKW:16 KWTO: .SDATA "TO" .DATA.B 0 .DATA.B 0 KWTOAD: .DATA.W LWORD FORTO .DATA.W LWORD ERWHT FORTO: BSR EEXPR:16 MOV.W R3,@FTOV MOV.W #LWORD KWSTP,R5 MOV.W #LWORD KWSTPAD,R4 BRA NXTKW:16 KWSTP: .SDATA "STEP" .DATA.B 0 .DATA.B 0 KWSTPAD: .DATA.W LWORD FSTEP .DATA.W LWORD FSTP1 FSTEP: BSR EEXPR:16 BRA FORO:16 FSTP1: MOV.W #1,R3 FORO: MOV.W R3,@FSTPV MOV.W @CLABL,R3 MOV.W R3,@FLABL MOV.W R2,@FOBJ BRA ENDL:16 NEXT: MOV.W #H'FFFF,E6 BSR TSTV:16 BCS ERWHT:16 MOV.W @FCNTR,R6 ;Address CMP.W R6,R3 BNE ERWHT:16 MOV.W @R6,R0 MOV.W @FSTPV,R6 BPL NXTP:16 ADD.W R6,R0 MOV.W R0,@R3 MOV.W @FTOV,R6 CMP.W R0,R6 BGT NXT1:16 MOV.W @FLABL,R3 MOV.W R3,@CLABL MOV.W @FOBJ,R2 BRA ENDL:16 NXTP: ADD.W R6,R0 MOV.W R0,@R3 MOV.W @FTOV,R6 CMP.W R0,R6 BCS NXT1:16 MOV.W @FLABL,R3 MOV.W R3,@CLABL MOV.W @FOBJ,R2 BRA ENDL:16 NXT1: BSR POPV:16 BRA ENDL:16 LIST: BSR GINT:16 BSR TSCR2:16 BSR SRCH:16 LISTL: BCS START:16 BSR WLINE:16 BSR BREAK:16 BSR SRCH1:16 BRA LISTL:16 WLINE: MOV.B @R2,R3H INC.W #1,R2 MOV.B @R2,R3L INC.W #1,R2 MOV.B #4,R1L BSR WINT:16 MOV.B #H'20,R0L BSR PUT:16 SUB.B R0L,R0L BSR MSG:16 RTS PRINT: MOV.B #6,R1L BSR SKPBL:16 PRSC: MOV.B @R2,R0H CMP.B #";",R0H BNE PRCR:16 INC.W #1,R2 BSR CRLF:16 BRA NXTGO:16 PRCR: MOV.B @R2,R0H CMP.B #H'D,R0H BNE PRSHA:16 INC.W #1,R2 BSR CRLF:16 BRA RUN1:16 PRSHA: MOV.B @R2,R0H CMP.B #"#",R0H BNE PRLTR:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,R1L BRA PRCMA:16 PRLTR: BSR PRSUB:16 BRA PREXP:16 PRCMA: MOV.B @R2,R0H CMP.B #",",R0H BNE PREND:16 INC.W #1,R2 BSR TSTSC:16 BRA PRSHA:16 PREND: BSR CRLF:16 BRA ENDL:16 PREXP: BSR EEXPR:16 PUSH.W R1 BSR WINT:16 POP.W R1 BRA PRCMA:16 PRSUB: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #H'22,R0H BNE PR13:16 INC.W #1,R2 MOV.B #H'22,R0L BRA PR11:16 PR13: MOV.B @R2,R0H CMP.B #"'",R0H BNE PR14:16 INC.W #1,R2 MOV.B #H'27,R0L PR11: BSR MSG:16 BSR SKPBL:16 CMP.B #",",R0L BNE PR14:16 POP.W R6 POP.W R6 BRA PRCMA:16 PR14: MOV.B @R2,R0H CMP.B #H'D,R0H BNE PR15:16 POP.W R6 POP.W R6 BRA PRCR:16 PR15: MOV.B @R2,R0H CMP.B #";",R0H BNE PR16:16 INC.W #1,R2 POP.W R6 POP.W R6 BRA NXTGO:16 PR16: RTS WINT: PUSH.W R1 MOV.W R3,R5 MOV.W #H'20,R6 MOV.W #H'A,R4 EXTS.L ER5 BPL WNT1:16 MOV.B #"-",R6L NEG.L ER5 WNT1: CMP.W R4,R5 BLT WNT4:16 DIVXU.W R4,ER5 PUSH.W E5 INC.B R6H EXTS.L ER5 BRA WNT1:16 WNT4: PUSH.W R5 INC.B R6H SUB.B R6H,R1L BLE WNT5:16 WNT6: MOV.B #H'20,R0L BSR PUT:16 DEC.B R1L BNE WNT6:16 WNT5: MOV.B R6L,R0L BSR PUT:16 WNT3: OR.B R6H,R6H BEQ WNT2:16 POP.W R0 DEC.B R6H ADD.B #H'30,R0L BSR PUT:16 BRA WNT3:16 WNT2: POP.W R1 RTS ERRIN: MOV.W @NCNTR,R3 MOV.W R3,R7 POP.W R3 MOV.W R3,@CLABL POP.W R2 POP.W R2 INPUT: PUSH.W R2 BSR SKPBL:16 PUSH.W R2 MOV.B @R2,R0L CMP.B #"%",R0L BNE INPT1:16 INC.W #1,R2 BSR TSTV:16 BRA INPT4:16 INPT1: BSR TSTV:16 BCS ERWHT:16 MOV.B @R2,R0H SUB.B R0L,R0L MOV.B R0L,@R2 POP.W R2 BSR MSG:16 DEC.W #1,R2 MOV.B R0H,@R2 INPT4: PUSH.W R2 MOV.W R3,R2 MOV.W @CLABL,R3 PUSH.W R3 MOV.W #LWORD INPUT,R3 MOV.W R3,@CLABL MOV.W R7,@NCNTR PUSH.W R2 MOV.B #H'3A,R0L BSR GETL:16 MOV.W #LWORD LBUF,R2 BSR EEXPR:16 POP.W R2 MOV.W R3,@R2 POP.W R3 MOV.W R3,@CLABL POP.W R2 POP.W R0 MOV.B @R2,R0H CMP.B #",",R0H BNE ENDL:16 INC.W #1,R2 BRA INPUT:16 LETDF: BSR TSCR1:16 CMP.B #H'D,R0L BEQ ENDL:16 LET: BSR LTSUB:16 MOV.B @R2,R0H CMP.B #",",R0H BNE ENDL:16 INC.W #1,R2 BRA LET:16 LTSUB: BSR TSTV:16 BCS ERWHT:16 PUSH.W R3 BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE LERR:16 INC.W #1,R2 BSR EEXPR:16 MOV.W R3,R1 POP.W R3 MOV.W R1,@R3 RTS GOTO: BSR EEXPR:16 PUSH.W R2 BSR TSCR2:16 BSR SRCH:16 BNE ERHW1:16 POP.W R0 BRA RUN2:16 RUN: BSR TSCR2:16 RUNN: MOV.W @OTOP,R2 RUN1: MOV.W #0,R3 BSR SRCH1:16 BCS START:16 RUN2: MOV.W R2,@CLABL INC.W #2,R2 NXTGO: BSR BREAK:16 MOV.W #LWORD STMKW,R5 MOV.W #LWORD STMAD,R4 BRA NXTKW:16 ENDL: BSR TSTSC:16 LERR: BRA ERWHT:16 TSTSC: MOV.B @R2,R0H CMP.B #";",R0H BNE TSCR1:16 INC.W #1,R2 POP.W R6 BRA NXTGO:16 TSCR1: MOV.B @R2,R0H CMP.B #H'D,R0H BNE TSRTN:16 INC.W #1,R2 POP.W R6 BRA RUN1:16 TSRTN: RTS TSCR2: BSR SKPBL:16 CMP.B #H'D,R0L BEQ RETSUB:16 BRA ERWHT:16 EEXPR: BSR EXPR:16 PUSH.W R3 MOV.W #LWORD ROPKW,R5 MOV.W #LWORD ROPKWAD,R4 BRA NXTKW:16 ROPKW: .SDATA ">="<0> .SDATA "#"<0> .SDATA ">"<0> .SDATA "="<0> .SDATA "<="<0> .SDATA "<"<0> .SDATA "=>"<0> .SDATA "=<"<0> .DATA.B 0 .DATA.B 0 ROPKWAD: .DATA.W LWORD GEm .DATA.W LWORD NEm .DATA.W LWORD GTm .DATA.W LWORD EQm .DATA.W LWORD LEm .DATA.W LWORD LTm .DATA.W LWORD GEm .DATA.W LWORD LEm .DATA.W LWORD NOROP GEm: BSR EXPR:16 POP.W R6 CMP.W R3,R6 BGE RETTRU:16 BRA RETFAL:16 NEm: BSR EXPR:16 POP.W R6 CMP.W R3,R6 BNE RETTRU:16 BRA RETFAL:16 GTm: BSR EXPR:16 POP.W R6 CMP.W R3,R6 BGT RETTRU:16 BRA RETFAL:16 LEm: BSR EXPR:16 POP.W R6 CMP.W R3,R6 BLE RETTRU:16 BRA RETFAL:16 EQm: BSR EXPR:16 POP.W R6 CMP.W R3,R6 BEQ RETTRU:16 BRA RETFAL:16 LTm: BSR EXPR:16 POP.W R6 CMP.W R3,R6 BLT RETTRU:16 BRA RETFAL:16 NOROP: POP.W R3 RTS RETFAL: MOV.W #0,R3 RTS RETTRU: MOV.W #-1,R3 RTS EXPR: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"-",R0H BNE EXPR1:16 INC.W #1,R2 MOV.W #0,R3 BRA NEGA1:16 EXPR1: MOV.B @R2,R0H CMP.B #"+",R0H BNE EXPR3:16 INC.W #1,R2 EXPR3: BSR TERM:16 EXPR2: MOV.B @R2,R0H CMP.B #"+",R0H BNE NEGA0:16 INC.W #1,R2 PUSH.W R3 BSR TERM:16 POP.W R0 ADD.W R0,R3 BVS ERSRY:16 BRA EXPR2:16 NEGA0: MOV.B @R2,R0H CMP.B #"-",R0H BNE EXPRT:16 INC.W #1,R2 NEGA1: PUSH.W R3 BSR TERM:16 POP.W R0 SUB.W R3,R0 MOV.W R0,R3 BRA EXPR2:16 TERM: BSR FACTR:16 MULT: MOV.B @R2,R0H CMP.B #"*",R0H BNE DIV:16 INC.W #1,R2 PUSH.W R3 BSR FACTR:16 MOV.W R3,R0 POP.W R3 MULXS.W R3,ER0 MOV.W R0,R3 BLD #7,R0H BCS ML1:16 CMP.W #0,E0 BNE ERHW1:16 BRA MULT:16 ML1: CMP.W #H'FFFF,E0 BNE ERHW1:16 BRA MULT:16 DIV: MOV.B @R2,R0H CMP.B #"/",R0H BNE EXPRT:16 INC.W #1,R2 PUSH.W R3 BSR FACTR:16 POP.W R0 CMP.W #0,R3 BEQ ERHW1:16 EXTS.L ER0 DIVXS.W R3,ER0 MOV.W R0,R3 MOV.W E0,@MODn BRA MULT:16 EXPRT: MOV.W #H'FFFF,E3 RTS ;***** PORT 1 ***** OP1: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PDR1 BRA ENDL:16 OPD1: MOV.B #H'E,R0L MOV.B R0L,@PMR1 BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PCR1 BRA ENDL:16 IN1: MOV.B @PDR1,R3L AND.B #H'F7,R3L MOV.B #0,R3H RTS OPU1: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PUCR1 BRA ENDL:16 ;***** PORT 2 ***** OP2: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PDR2 BRA ENDL:16 OPD2: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PCR2 BRA ENDL:16 IN2: MOV.B @PDR2,R3L AND.B #1,R3L MOV.B #0,R3H RTS ;***** PORT 5 ***** OP5: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PDR5 BRA ENDL:16 OPD5: MOV.B #H'C0,R0L MOV.B R0L,@PMR5 BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PCR5 BRA ENDL:16 OPU5: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PUCR5 BRA ENDL:16 IN5: MOV.B @PDR5,R3L MOV.B #0,R3H RTS ;***** PORT 7 ***** OP7: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PDR7 BRA ENDL:16 OPD7: MOV.B #H'C0,R0L MOV.B R0L,@PMR5 BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PCR7 BRA ENDL:16 IN7: MOV.B @PDR7,R3L AND.B #H'70,R0L MOV.B #0,R3H RTS ;***** PORT 8 ***** OP8: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PDR8 BRA ENDL:16 OPD8: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B R3L,@PCR8 BRA ENDL:16 IN8: MOV.B @PDR8,R3L MOV.B #0,R3H RTS ;***** PORT B ***** INB: MOV.B @PDRB,R3L MOV.B #0,R3H RTS DUMP: MOV.W @OTOP,R1 MOV.W @OBTM,R3 CMP.W R3,R1 BCC DEND:16 BSR DMPDT:16 MOV.B R1H,R0H BSR HCOUT:16 BSR HCOUT1:16 MOV.B R1L,R0H BSR HCOUT:16 BSR HCOUT1:16 MOV.B R3H,R0H BSR HCOUT:16 BSR HCOUT1:16 MOV.B R3L,R0H BSR HCOUT:16 BSR HCOUT1:16 DMP1: MOV.B @R1,R0H BSR HCOUT:16 INC.W #1,R1 MOV.B R1L,R0L AND.B #7,R0L BSR DMPLF:16 CMP.W R3,R1 BCS DMP1:16 DEND: BRA ENDL:16 DMPLF: BNE DMP2:16 BSR CRLF:16 BSR DMPDT:16 RTS DMP2: BSR HCOUT1:16 RTS DMPDT: MOV.B #H'9,R0L BSR PUT:16 MOV.B #".",R0L BSR PUT:16 MOV.B #"D",R0L BSR PUT:16 MOV.B #"A",R0L BSR PUT:16 MOV.B #"T",R0L BSR PUT:16 MOV.B #"A",R0L BSR PUT:16 MOV.B #".",R0L BSR PUT:16 MOV.B #"B",R0L BSR PUT:16 RTS HCOUT: MOV.B #" ",R0L BSR PUT:16 MOV.B #"H",R0L BSR PUT:16 MOV.B #"'",R0L BSR PUT:16 BSR HXOUT:16 RTS HCOUT1: MOV.B #",",R0L BSR PUT:16 RTS HXOUT: MOV.B R0H,R0L AND.B #H'F0,R0L SHLR.B R0L SHLR.B R0L SHLR.B R0L SHLR.B R0L BSR HX1:16 MOV.B R0H,R0L AND.B #H'F,R0L BSR HX1:16 RTS HX1: CMP.B #H'A,R0L BCC HX2:16 ADD.B #H'30,R0L BSR PUT:16 RTS HX2: ADD.B #H'37,R0L BSR PUT:16 RTS PLOAD: MOV.W #H'4002,R6 ; Program load from ROM MOV.W @R6,R1 INC.W #2,R6 MOV.W @R6,R3 CMP.W R3,R1 BCC START:16 SUB.W R1,R3 INC.W #2,R3 INC.W #2,R3 DEC.W #2,R6 MOV.W #LWORD OTOP,R0 PLD1: MOV.B @R6,R1L INC.W #1,R6 MOV.B R1L,@R0 INC.W #1,R0 DEC.W #1,R3 BNE PLD1:16 MOV.L #STACK,SP MOV.W #LWORD ZERO,R3 MOV.W R3,@CLABL MOV.W #0,R3 MOV.W R3,@FCNTR MOV.W R3,@RSTCK BRA RUNN:16 FACTR: MOV.W #LWORD FNKW,R5 MOV.W #LWORD FNKWAD,R4 BRA NXTKW:16 FNKW: .SDATA "ABS"<0> .SDATA "SIZE"<0> .SDATA "MS"<0> .SDATA "SEC"<0> .SDATA "MIN"<0> .SDATA "HOR"<0> .SDATA "DAY"<0> .SDATA "TIM"<0> .SDATA "AD"<0> .SDATA "IN"<0> .SDATA "IRQ"<0> .SDATA "PEEK"<0> .SDATA "AND"<0> .SDATA "OR"<0> .SDATA "XOR"<0> .SDATA "NOT"<0> .SDATA "NEG"<0> .SDATA "RL"<0> .SDATA "HEX"<0> .SDATA "MOD"<0> .SDATA "LED"<0> .SDATA "BCD"<0> .DATA.B 0 FNKWAD: .DATA.W LWORD FNABS .DATA.W LWORD RSIZE .DATA.W LWORD TMMS .DATA.W LWORD TMSEC .DATA.W LWORD TMMIN .DATA.W LWORD TMHOR .DATA.W LWORD TMDAY .DATA.W LWORD FNTIM .DATA.W LWORD FNAD .DATA.W LWORD FNIN .DATA.W LWORD FNIRQ .DATA.W LWORD PEEK .DATA.W LWORD FNAND .DATA.W LWORD FNOR .DATA.W LWORD FNXOR .DATA.W LWORD FNNOT .DATA.W LWORD FNNEG .DATA.W LWORD FNRLLR .DATA.W LWORD HEXINP .DATA.W LWORD FNMOD .DATA.W LWORD FNLED .DATA.W LWORD FNBCD .DATA.W LWORD VARI FNAD: MOV.W #LWORD FNKW1,R5 MOV.W #LWORD FNKWAD1,R4 BRA NXTKW :16 FNKW1: .SDATA "A"<0> .SDATA "B"<0> .SDATA "C"<0> .SDATA "D"<0> .SDATA "E"<0> .SDATA "F"<0> .SDATA "G"<0> .SDATA "H"<0> .DATA.B 0 .DATA.B 0 FNKWAD1: .DATA.W LWORD FNADA .DATA.W LWORD FNADB .DATA.W LWORD FNADC .DATA.W LWORD FNADD .DATA.W LWORD FNADE .DATA.W LWORD FNADF .DATA.W LWORD FNADG .DATA.W LWORD FNADH .DATA.W LWORD ERWHT FNIN: MOV.W #LWORD FNINFN,R5 MOV.W #LWORD FNINAD,R4 BRA NXTKW:16 FNINFN: .SDATA "1"<0> .SDATA "2"<0> .SDATA "B"<0> .SDATA "5"<0> .SDATA "7"<0> .SDATA "8"<0> .DATA.B 0 .DATA.B 0 FNINAD: .DATA.W LWORD IN1 .DATA.W LWORD IN2 .DATA.W LWORD INB .DATA.W LWORD IN5 .DATA.W LWORD IN7 .DATA.W LWORD IN8 .DATA.W LWORD ERWHT FNRLLR: MOV.W #LWORD FNRLTL,R5 MOV.W #LWORD FNRLAD,R4 BRA NXTKW:16 FNRLTL: .SDATA "L"<0> .SDATA "R"<0> .DATA.B 0 .DATA.B 0 FNRLAD: .DATA.W LWORD FNRLL .DATA.W LWORD FNRLR .DATA.W LWORD ERWHT FNABS: BSR EXPRO:16 BSR ABS:16 RTS ABS: AND.W R3,R3 BPL RETSUB:16 NEG.W R3 RTS RSIZE: MOV.W @OBTM,R6 ; SIZE MOV.W #LWORD VTOP,R3 SUB.W R6,R3 RTS VARI: BSR TSTV:16 BCS NUMB:16 MOV.W R3,R6 MOV.W #H'FFFF,E6 MOV.B @R6,R3H MOV.B @(1,R6),R3L RTS TSTV: BSR SKPBL:16 MOV.B #H'40,R0H ; @ SUB.B R0H,R0L BCS RETSUB:16 BNE TSTV1:16 INC.W #1,R2 BSR EXPRO:16 ADD.W R3,R3 BVS ERHOW:16 MOV.W #LWORD VTOP,R6 SUB.W R3,R6 MOV.W @OBTM,R3 CMP.W R3,R6 BCS ERSY1:16 MOV.W R6,R3 RTS TSTV1: CMP.B #H'1B,R0L BCC ERHOW:16 INC.W #1,R2 MOV.W #LWORD VTOP,R3 MOV.B #0,R0H ADD.W R0,R0 ADD.W R0,R3 RTS NUMB: BSR GINT:16 MOV.B R1H,R0L OR.B R0L,R0L BNE RETSUB:16 EXPRO: MOV.B @R2,R0H CMP.B #"(",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B @R2,R0H CMP.B #")",R0H BNE ERWHT:16 INC.W #1,R2 RTS FNIRQ: MOV.W @EVIRQ,R3 RTS PEEK: BSR EXPRO:16 MOV.W R3,R1 MOV.W @R1,R3 RTS FNAND: MOV.B @R2,R0H CMP.B #"(",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B @R2,R0H CMP.B #",",R0H BNE ERWHT:16 INC.W #1,R2 PUSH.W R3 BSR EEXPR:16 CMP.B #")",R0L BNE ERWHT:16 INC.W #1,R2 POP.W R6 AND.W R6,R3 RTS FNOR: MOV.B @R2,R0H CMP.B #"(",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B @R2,R0H CMP.B #",",R0H BNE ERWHT:16 INC.W #1,R2 PUSH.W R3 BSR EEXPR:16 CMP.B #")",R0L BNE ERWHT:16 INC.W #1,R2 POP.W R6 OR.W R6,R3 RTS FNXOR: MOV.B @R2,R0H CMP.B #"(",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.B @R2,R0H CMP.B #",",R0H BNE ERWHT:16 INC.W #1,R2 PUSH.W R3 BSR EEXPR:16 CMP.B #")",R0L BNE ERWHT:16 INC.W #1,R2 POP.W R6 XOR.W R6,R3 RTS FNNOT: BSR EXPRO:16 NOT.W R3 RTS FNNEG: BSR EXPRO:16 NEG.W R3 RTS FNRLL: BSR EXPRO:16 ROTL.W R3 ROTL.W R3 ROTL.W R3 ROTL.W R3 RTS FNRLR: BSR EXPRO:16 ROTR.W R3 ROTR.W R3 ROTR.W R3 ROTR.W R3 RTS ERWHT: PUSH.W R2 ERWT1: MOV.W #LWORD WHTMS,R4 BRA LERMS:16 ERHOW: PUSH.W R2 ERHW1: MOV.W #LWORD HOWMS,R4 BRA LERMS:16 ERSRY: PUSH.W R2 ERSY1: MOV.W #LWORD SRYMS,R4 LERMS: MOV.W #RAMFIX,E3 SUB.B R0L,R0L BSR MSGP:16 POP.W R2 ; MOV.B @R2,R0L PUSH.W R0 SUB.B R0L,R0L MOV.B R0L,@R2 MOV.W @CLABL,R3 PUSH.W R3 MOV.W @R3,R0 POP.W R2 OR.W R0,R0 BEQ START:16 BMI ERRIN:16 BSR WLINE:16 DEC.W #1,R2 POP.W R0 MOV.B R0L,@R2 MOV.B #H'3F,R0L ; ? BSR PUT:16 SUB.B R0L,R0L BSR MSG:16 BRA START:16 MYMSG: .SDATA "Hello! I am H8. Nice to meet you." .DATA.B H'0D OKMES: .SDATA "OK" .DATA.B H'0D HOWMS: .SDATA "HOW?" .DATA.B H'0D WHTMS: .SDATA "WHAT?" .DATA.B H'0D SRYMS: .SDATA "SORRY" .DATA.B H'0D MSGP: MOV.W #ROMFIX,E4 MOV.B R0L,R1H MSG1: MOV.B @R4,R0L INC.W #1,R4 CMP.B R1H,R0L BEQ RETSUB:16 BSR PUT:16 CMP.B #H'D,R0L BNE MSG1:16 RTS MSG: MOV.B R0L,R1H MSG11: MOV.B @R2,R0L INC.W #1,R2 CMP.B R1H,R0L BEQ RETSUB:16 BSR PUT:16 CMP.B #H'D,R0L BNE MSG11:16 RTS MSGAL: MOV.W #ROMFIX,E4 MOV.B R0L,R1H MSGA: MOV.B @R4,R0L INC.W #1,R4 CMP.B R1H,R0L BEQ RETSUB:16 BSR PUT:16 BRA MSGA:16 GINT: MOV.W #0,R3 MOV.B R3H,R1H BSR SKPBL:16 GET11: CMP.B #H'30,R0L BCS RETSUB:16 CMP.B #H'3A,R0L BHS RETSUB:16 INC.B R1H MOV.W R3,R6 ADD.W R3,R3 ADD.W R3,R3 ADD.W R6,R3 ADD.W R3,R3 MOV.B @R2,R0L INC.W #1,R2 AND.W #H'0F,R0 ADD.W R0,R3 BMI ERHOW:16 MOV.B @R2,R0L BRA GET11:16 ROMRAM: MOV.W #RAMFIX,E0 MOV.W E0,E1 MOV.W E0,E2 MOV.W E0,E3 MOV.W #ROMFIX,E4 MOV.W E4,E5 MOV.W E4,E6 RTS ;****** TIMER A ****** TIMSET: MOV.B #H'9B,R0L MOV.B R0L,@TMA BSET.B #6,@IENR1 MOV.W #0,R0 MOV.W R0,@MS MOV.W R0,@SEC MOV.W R0,@MIN MOV.W R0,@HOR MOV.W R0,@DAY MOV.W R0,@ADJDAY MOV.W R0,@ADJHOR MOV.W R0,@ADJMIN RTS TIMCMD: MOV.W #LWORD TIMOP,R5 MOV.W #LWORD TIMOPAD,R4 BRA NXTKW:16 TIMOP: .SDATA "MIN"<0> .SDATA "HOR"<0> .SDATA "DAY"<0> .DATA.B 0 .DATA.B 0 TIMOPAD: .DATA.W LWORD TIMMIN .DATA.W LWORD TIMHOR .DATA.W LWORD TIMDAY .DATA.W LWORD TIMCLR TIMDAY: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.W R3,@ADJDAY BRA ENDL:16 TIMHOR: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.W R3,@ADJHOR BRA ENDL:16 TIMMIN: BSR SKPBL:16 MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.W R3,@ADJMIN BRA ENDL:16 TIMCLR: MOV.W #0,R0 MOV.W R0,@MS MOV.W R0,@SEC MOV.W R0,@MIN MOV.W R0,@HOR MOV.W R0,@DAY MOV.W R0,@ADJMIN MOV.W R0,@ADJHOR MOV.W R0,@ADJDAY BRA ENDL:16 TIMERA: PUSH.L ER0 BCLR #6,@IRR1 MOV.W @MS,R0 INC.W #1,R0 CMP.W #32,R0 BNE TMSMS MOV.W @SEC,R0 INC.W #1,R0 CMP.W #60,R0 BNE TMSSEC MOV.W @MIN,R0 INC.W #1,R0 CMP.W #60,R0 BNE TMSMIN MOV.W @HOR,R0 INC.W #1,R0 CMP.W #24,R0 BNE TMSHOR MOV.W @DAY,R0 INC.W #1,R0 MOV.W R0,@DAY MOV.W @ADJDAY,R0 MOV.W R0,@MS MOV.W #0,R0 MOV.W R0,@SEC MOV.W R0,@MIN MOV.W R0,@HOR POP.L ER0 RTE TMSSEC: MOV.W R0,@SEC MOV.W #0,R0 TMSMS: MOV.W R0,@MS POP.L ER0 RTE TMSMIN: MOV.W R0,@MIN MOV.W @ADJMIN,R0 MOV.W R0,@MS MOV.W #0,R0 MOV.W R0,@SEC POP.L ER0 RTE TMSHOR: MOV.W R0,@HOR MOV.W @ADJHOR,R0 MOV.W R0,@MS MOV.W #0,R0 MOV.W R0,@MIN MOV.W R0,@SEC POP.L ER0 RTE TMMS: MOV.W @MS,R3 RTS TMSEC: MOV.W @SEC,R3 RTS TMMIN: MOV.W @MIN,R3 RTS TMHOR: MOV.W @HOR,R3 RTS TMDAY: MOV.W @DAY,R3 RTS FNTIM: MOV.W #LWORD TIMTBL,R5 MOV.W #LWORD TIMADR,R4 BRA NXTKW:16 TIMTBL: .SDATA "MIN"<0> .SDATA "HOR"<0> .SDATA "DAY"<0> .DATA.B 0 .DATA.B 0 TIMADR: .DATA.W LWORD FNTMIN .DATA.W LWORD FNTHOR .DATA.W LWORD FNTDAY .DATA.W LWORD ERWHT FNTMIN: MOV.W @ADJMIN,R3 RTS FNTHOR: MOV.W @ADJHOR,R3 RTS FNTDAY: MOV.W @ADJDAY,R3 RTS SETMS: BSR SKPBL:16 ; Okay MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 CMP.W #1000,R3 BCC ERHOW:16 MOV.W R3,@MS BRA ENDL:16 SETSEC: BSR SKPBL:16 MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 CMP.W #60,R3 BCC ERHOW:16 MOV.W R3,@SEC BRA ENDL:16 SETMIN: BSR SKPBL:16 MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 CMP.W #60,R3 BCC ERHOW:16 MOV.W R3,@MIN BRA ENDL:16 SETHOR: BSR SKPBL:16 MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 CMP.W #24,R3 BCC ERHOW:16 MOV.W R3,@HOR BRA ENDL:16 SETDAY: BSR SKPBL:16 MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.W R3,@DAY BRA ENDL:16 LEDINT: BSR EXPRO:16 MOV.W R3,@LEDEX MOV.W #0,R0 MOV.W R0,@LED MOV.W R0,@LEDSQ MOV.B #H'FF,R0L ;MOV.B R0L,@PIDDR MOV.B #H'F,R0L ;MOV.B R0L,@P2DDR MOV.B #H'A2,R0L ;MOV.B R0L,@TCR2 ; H'FFF64 MOV.B #H'8A,R0L ;MOV.B R0L,@TIOR2 ; H'FFF65 MOV.B #H'F9,R0L ;MOV.B R0L,@TIER2 ; H'FFF66 MOV.W #H'2710,R0 ;MOV.W R0,@GRA2 ; H'FFF6A ;MOV.B @TSTR,R0L OR.B #4,R0L ;MOV.B R0L,@TSTR ; Start Timer BRA ENDL:16 LEDSTP: ;MOV.B @TSTR,R0L AND.B #H'FB,R0L ;MOV.B R0L,@TSTR MOV.B #0,R0L ;MOV.B R0L,@P1DR BRA ENDL:16 LEDDATA: BSR SKPBL:16 MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT:16 INC.W #1,R2 BSR EEXPR:16 MOV.W R3,@LED BRA ENDL:16 FNLED: MOV.W @LED,R3 RTS IRLED: PUSH.W R0 PUSH.W R1 PUSH.W R2 MOV.W #0,E1 MOV.W #H'FFFF,E2 MOV.W @LED,R1 MOV.W @LEDEX,R0 CMP.W #0,R0 BEQ IRLED1:16 CMP.W #1,R0 BEQ IRLED2:16 IRLED3: MOV.W @LEDSQ,R0 CMP.W #0,R0 BEQ LED13:16 CMP.W #1,R0 BEQ LED23:16 CMP.W #2,R0 BEQ LED33:16 CMP.W #3,R0 BEQ LED43:16 XOR.W R0,R0 MOV.W R0,@LEDSQ BRA IRLED3:16 LED13: AND.W #H'0F,R1 MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'0E,R2L BRA LEDDSP:16 LED23: MOV.W R1,R2 AND.W #H'F0,R2 BEQ LED232:16 AND.W #H'F0,R1 SHLR.W R1 SHLR.W R1 SHLR.W R1 SHLR.W R1 MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'0D,R2L BRA LEDDSP:16 LED232: MOV.W #H'0D,R2 BRA LEDDSP:16 LED33: AND.W #H'0F00,R1 MOV.B R1H,R1L XOR.B R1H,R1H MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'0B,R2L BRA LEDDSP:16 LED43: MOV.W R1,R2 AND.W #H'F000,R2 BEQ LED432:16 AND.W #H'F000,R1 MOV.B R1H,R1L XOR.B R1H,R1H SHLR.W R1 SHLR.W R1 SHLR.W R1 SHLR.W R1 MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'07,R2L BRA LEDDSP:16 LED432: MOV.W #H'07,R2 BRA LEDDSP:16 IRLED2: MOV.W @LEDSQ,R0 CMP.W #0,R0 BEQ LED12:16 CMP.W #1,R0 BEQ LED22:16 CMP.W #2,R0 BEQ LED32:16 CMP.W #3,R0 BEQ LED42:16 XOR.W R0,R0 MOV.W R0,@LEDSQ BRA IRLED2:16 LED12: AND.W #H'0F,R1 MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'0E,R2L BRA LEDDSP:16 LED22: MOV.W R1,R2 AND.W #H'FFF0,R2 BEQ LED222:16 AND.W #H'F0,R1 SHLR.W R1 SHLR.W R1 SHLR.W R1 SHLR.W R1 MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'0D,R2L BRA LEDDSP:16 LED222: MOV.W #H'0D,R2 BRA LEDDSP:16 LED32: MOV.W R1,R2 AND.W #H'FF00,R2 BEQ LED322:16 AND.W #H'0F00,R1 MOV.B R1H,R1L XOR.B R1H,R1H MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'0B,R2L BRA LEDDSP:16 LED322: MOV.W #H'0B,R2 BRA LEDDSP:16 LED42: MOV.W R1,R2 AND.W #H'F000,R2 BEQ LED422:16 AND.W #H'F000,R1 MOV.B R1H,R1L XOR.B R1H,R1H SHLR.W R1 SHLR.W R1 SHLR.W R1 SHLR.W R1 MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'07,R2L BRA LEDDSP:16 LED422: MOV.W #H'07,R2 BRA LEDDSP:16 IRLED1: MOV.W @LEDSQ,R0 CMP.W #0,R0 BEQ LED1:16 CMP.W #1,R0 BEQ LED2:16 CMP.W #2,R0 BEQ LED3:16 CMP.W #3,R0 BEQ LED4:16 XOR.W R0,R0 MOV.W R0,@LEDSQ BRA IRLED1:16 LED1: AND.W #H'0F,R1 MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'0E,R2L BRA LEDDSP:16 LED2: AND.W #H'F0,R1 SHLR.W R1 SHLR.W R1 SHLR.W R1 SHLR.W R1 MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'0D,R2L BRA LEDDSP:16 LED3: AND.W #H'0F00,R1 MOV.B R1H,R1L XOR.B R1H,R1H MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'0B,R2L BRA LEDDSP:16 LED4: AND.W #H'F000,R1 MOV.B R1H,R1L XOR.B R1H,R1H SHLR.W R1 SHLR.W R1 SHLR.W R1 SHLR.W R1 MOV.W #LWORD LEDCODE,R2 ADD.W R2,R1 MOV.B @R1,R2H MOV.B #H'07,R2L LEDDSP: ;MOV.B R2H,@P1DR ;MOV.B R2L,@P2DR INC.W #1,R0 MOV.W R0,@LEDSQ ;MOV.B @TSR2,R0L AND.B #H'FE,R0L ;MOV.B R0L,@TSR2 POP.W R2 POP.W R1 POP.W R0 RTE LEDCODE: .DATA.B H'77 .DATA.B H'22 .DATA.B H'5B .DATA.B H'6B .DATA.B H'2E .DATA.B H'6D .DATA.B H'7D .DATA.B H'27 .DATA.B H'7F .DATA.B H'6F .DATA.B H'3F .DATA.B H'7C .DATA.B H'55 .DATA.B H'7A .DATA.B H'5D .DATA.B H'1D .DATA.B 0,0 ;***** AD CONVERTER ***** FNADA: MOV.B #H'20,R0L MOV.B R0L,@ADCSR AD1: MOV.B @ADCSR,R0L AND.B #H'80,R0L BEQ AD1 MOV.W @ADDRA,R3 BSR ADRLL:16 RTS FNADB: MOV.B #H'21,R0L MOV.B R0L,@ADCSR AD2: MOV.B @ADCSR,R0L AND.B #H'80,R0L BEQ AD2:16 MOV.W @ADDRB,R3 BSR ADRLL:16 RTS FNADC: MOV.B #H'22,R0L MOV.B R0L,@ADCSR AD3: MOV.B @ADCSR,R0L AND.B #H'80,R0L BEQ AD3:16 MOV.W @ADDRC,R3 BSR ADRLL:16 RTS FNADD: MOV.B #H'23,R0L MOV.B R0L,@ADCSR AD4: MOV.B @ADCSR,R0L AND.B #H'80,R0L BEQ AD4:16 MOV.W @ADDRD,R3 BSR ADRLL:16 RTS FNADE: MOV.B #H'24,R0L MOV.B R0L,@ADCSR AD5: MOV.B @ADCSR,R0L AND.B #H'80,R0L BEQ AD5:16 MOV.W @ADDRA,R3 BSR ADRLL:16 RTS FNADF: MOV.B #H'25,R0L MOV.B R0L,@ADCSR AD6: MOV.B @ADCSR,R0L AND.B #H'80,R0L BEQ AD6:16 MOV.W @ADDRB,R3 BSR ADRLL:16 RTS FNADG: MOV.B #H'26,R0L MOV.B R0L,@ADCSR AD7: MOV.B @ADCSR,R0L AND.B #H'80,R0L BEQ AD7:16 MOV.W @ADDRC,R3 BSR ADRLL:16 RTS FNADH: MOV.B #H'27,R0L MOV.B R0L,@ADCSR AD8: MOV.B @ADCSR,R0L AND.B #H'80,R0L BEQ AD8:16 MOV.W @ADDRD,R3 BSR ADRLL:16 RTS ADRLL: SHLR.W R3 SHLR.W R3 SHLR.W R3 SHLR.W R3 SHLR.W R3 SHLR.W R3 RTS HEXINP: XOR.W R3,R3 MOV.B @R2,R0L CMP.B #"(",R0L BNE ERWHT:16 HXIN: INC.W #1,R2 MOV.B @R2,R0L CMP.B #")",R0L BNE HXIN1:16 INC.W #1,R2 RTS HXIN1: SHAL.W R3 SHAL.W R3 SHAL.W R3 SHAL.W R3 CMP.B #H'30,R0L BCS ERWHT:16 CMP.B #H'3A,R0L BCC HXIN2 :16 AND.B #H'0F,R0L ADD.B R0L,R3L BRA HXIN:16 HXIN2: AND.B #H'0F,R0L CMP.B #7,R0L BCC ERWHT:16 MOV.B #9,R0H ADD.B R0H,R0L ADD.B R0L,R3L BRA HXIN:16 FNMOD: MOV.W @MODn,R3 RTS FNBCD: BSR EXPRO:16 BSR ABS:16 MOV.W R3,R1 XOR.W R3,R3 MOV.W #10000,R0 ; 10000 EXTS.L ER1 DIVXU.W R0,ER1 MOV.W E1,R1 MOV.W #1000,R0 ; 1000 EXTS.L ER1 DIVXU.W R0,ER1 SHLL.B R1L SHLL.B R1L SHLL.B R1L SHLL.B R1L MOV.B R1L,R1H XOR.B R1L,R1L ADD.W R1,R3 MOV.W E1,R1 MOV.W #100,R0 ; 100 EXTS.L ER1 DIVXU.W R0,ER1 MOV.B R1L,R1H XOR.B R1L,R1L ADD.W R1,R3 MOV.W E1,R1 MOV.W #10,R0 ; 10 EXTS.L ER1 DIVXU.W R0,ER1 SHLL.B R1L SHLL.B R1L SHLL.B R1L SHLL.B R1L ADD.W R1,R3 MOV.W E1,R1 ADD.W R1,R3 BSR ROMRAM:16 RTS ; ***** OUTPUT ONE ASCII CHARACTOR ***** CRLF: MOV.B #H'0D,R0L ; CR Code PUT: PUSH.W R0 BSR RSOUT POP.W R0 CMP.B #H'0D,R0L BNE RETSUB:16 MOV.B #H'0A,R0L BSR PUT MOV.B #H'0D,R0L RTS RSOUT: BTST.B #7,@SSR BEQ RSOUT MOV.B R0L,@TDR RSOT2: BTST.B #2,@SSR BEQ RSOT2 RTS ; ***** INPUT ONE ASCII CHARACTOR ***** ; Break Key Check BREAK: MOV.B @SSR,R0L AND.B #H'38,R0L BNE RCVER BTST.B #6,@SSR BNE GETCH RTS ;BRA BREAK GETCH: MOV.B @RDR,R0L CMP.B #H'03,R0L BEQ START OR.B R0L,R0L RTS RCVER: BCLR.B #3,@SSR BCLR.B #4,@SSR BCLR.B #5,@SSR RTS SCI_INIT: MOV.B #0,R0L MOV.B R0L,@SCR3 ;TE=0, RE=0, CKE1=0, CKE0=0 MOV.B R0L,@SMR ;SMR= 0000 0000 (n=0) MOV.B #51,R0L MOV.B R0L,@BRR ;BRR=25 (N=25) MOV.W #280,R0 SCI_INIT_WAIT: DEC.W #1,R0 BNE SCI_INIT_WAIT MOV.B #H'30,R0L MOV.B R0L,@SCR3 ;SCR3=0011 0000 (RIE=1,TE=1,RE=1) BSET #1,@PMR1 MOV.B @SSR,R0L ;Dummy Read MOV.B #H'80,R0L MOV.B R0L,@SSR ;Clear Error Flag (TDRE=1) ANDC.B #B'01111111,CCR ;割り込みマスクをクリアする RTS ;***** TRAP ***** TRAPA0: MOV.W #LWORD MYMSG,R4 SUB R0L,R0L BSR MSGP RTE TRAPA1: TRAPA2: TRAPA3: NMI: RSV: RTE HLPHLP: MOV.W #LWORD HPHLP,R4 SUB R0L,R0L BSR MSGAL:16 BRA ENDL:16 HLPVER: MOV.W #LWORD HPVER,R4 SUB R0L,R0L BSR MSGAL:16 BRA ENDL:16 HLPPIN: MOV.W #LWORD PINDATA,R4 SUB R0L,R0L BSR MSGAL:16 BRA ENDL:16 HPHLP: .SDATA "HELP MESSAGE" .SDATA "" .SDATA "Command: LIST, LIST 100, RUN, NEW, DUMP, VER, ?, (? PIN)" .SDATA "" .SDATA "Sentence: LET A=10, GOTO A, GOSUB B, RETURN, IF A=10 GOTO 10" .SDATA " FOR I=1 TO 10, NEXT I, REM, INPUT A,B" .SDATA " PRINT 'A',A, STOP, MS=750, SEC=50, MIN=40, HOR=23, DAY=1, TIM=5" .SDATA " OP(1 2 5 7 8 B)=255, OPD(1 2 5 7 8)=255, OPU(1 5)=255" .SDATA " IRQ, IRQ(0 1 2 3 4 5), IRSTP(0 1 2 3 4 5)" .SDATA " LED=BCD(123), LEDINT(0), LEDSTP" .SDATA " IRQ=0 / GOTO IRQ, IRQn 100, IRSTPn" .SDATA "" .SDATA "Function: ABS(n), SIZE, MS, SEC, MIN, HOR, DAY, HEX(FFF), A=B/C+MOD" .SDATA " AD(A B C D E F G H), IN(1 2 5 7 8 B), IRQ" .SDATA " PEEK(n), AND(n,m), OR(n,m), XOR(n,m), NOT(n), NEG(n)" .SDATA " RLL(n), RLR(n), BCD(n), TIM" .SDATA " IF IRQ#0 GOSUB IRQ" .DATA.B H'0 HPVER: .SDATA "Machine Control Language By Narita Takato 2004, Oct. 31" .SDATA " Version Number 1.00 Machine Number 1" .SDATA "" .SDATA "" PINDATA: .SDATA "H8_3664 PIN DATA" .SDATA " CN1" .SDATA " n: 1 2 3 4 5 6 7 8 9 0" .SDATA " 0n GND GND AN-4 AN-5 AN-6 AN-7 AN-8 AN-2 AN-1 AN-0" .SDATA " 1n Vc-1 RES TEST WKP0 WKP1 WKP2 WKP3 WKP4 WKP5 TMOW" .SDATA " 2n P1-1 P1-2 Vcc PSIN GND GND" .SDATA "" .SDATA " CN2" .SDATA " n: 1 2 3 4 5 6 7 8 9 0" .SDATA " 0n GND GND SDA SCL TMRI TMCI TMOV NMI FTCI FT-A" .SDATA " 1n FT-B FT-C FT-D JP2 P8-6 P8-7 SCK3 RXD TXD IOQ0" .SDATA " 2n IOQ1 IOQ2 IOQ3 RXD TXD GND" .SDATA "" .SDATA "" .SDATA "SPECIAL USE" .SDATA " PORT-1 P17-IRQ3, P16-IRQ2, P15-IRQ1, P14-IRQ0, P10-TMOW" .SDATA " PORT-2 P22-TXD, P21-RXD, P20-SCK3" .SDATA " PORT-5 P57-SCL, P56-SDA, P55-WKP5,ADTRG, P54-WKP4" .SDATA " P53-WKP3, P52-WKP2, P51-WKP1, P50-WKP0" .SDATA " PORT-7 P76-TMOV, P75-TMCIV, P74-TMRIV" .SDATA " PORT-8 P87, P86, P85, P84-FTIOD" .SDATA " P83-FTIOC, P82-FTIOB, P81-FTIOA, P80-FTCI" .SDATA " PORT-B PB7-AN7, PB6-AN6, PB5-AN5, PB4-AN4" .SDATA " PB3-AN3, PB2-AN2, PB1-AN1, PB0-AN0" .SDATA ""<0> .DATA.B H'0 .SECTION RAM, DATA, LOCATE=H'F780 OTOP: .RES.W 1 OBTM: .RES.W 1 TEXTRAM: .RES.B 1400 WORKRAM: .RES.B 2 ; Start From @(D VTOP: .RES.W 27 ; @(O),A-Z CLABL: .RES.W 1 ZERO: .RES.W 1 RSTCK: .RES.W 1 NCNTR: .RES.W 1 FCNTR: .RES.W 1 FSTPV: .RES.W 1 FTOV: .RES.W 1 FLABL: .RES.W 1 FOBJ: .RES.W 1 MODn: .RES.W 1 TIMCNST: .RES.W 1 MS: .RES.W 1 SEC: .RES.W 1 MIN: .RES.W 1 ; I Byte Size HOR: .RES.W 1 DAY: .RES.W 1 ADJMIN: .RES.W 1 ADJHOR: .RES.W 1 ADJDAY: .RES.W 1 AUTO: .RES.W 1 ADA: .RES.W 1 ADB: .RES.W 1 ADC: .RES.W 1 ADD: .RES.W 1 ADE: .RES.W 1 ADF: .RES.W 1 ADG: .RES.W 1 ADH: .RES.W 1 EVIRQ: .RES.W 1 ADIRQ0: .RES.W 1 ADIRQ1: .RES.W 1 ADIRQ2: .RES.W 1 ADIRQ3: .RES.W 1 ADIRQ4: .RES.W 1 ADIRQ5: .RES.W 1 LEDSQ: .RES.W 1 LEDEX: .RES.W 1 LED: .RES.W 1 TEST: .RES.W 1 LBUF: .RES.B 128 ; LBUF Top Address TMSTK: .RES.B 2 .SECTION STK, STACK, LOCATE=H'FF7F STACK: .EQU $ .SECTION IO, DATA, LOCATE=H'FF80 ; TMRW: .RES.B 1 ; H'FF80 ; Timer mode resister; Timer W TCRW: .RES.B 1 ; H'FF81 ; Timer control resister TIERW: .RES.B 1 ; H'FF82 ; Timer interrupt TSRW: .RES.B 1 ; H'FF83 TIOR0: .RES.B 1 ; H'FF84 TIOR1: .RES.B 1 ; H'FF85 TCNT: .RES.B 2 ; H'FF86 GRA: .RES.B 2 ; H'FF88 GRB: .RES.B 2 ; H'FF8A GRC: .RES.B 2 ; H'FF8C GRD: .RES.B 2 ; H'FF8E FLMCR1: .RES.B 1 ; H'FF90 ; Flash control resister FLMCR2: .RES.B 1 FLPWCR: .RES.B 1 EBR1: .RES.B 1 .RES.B 7 FENR: .RES.B 1 .RES.B 4 TCRV0: .RES.B 1 ; H'FFA0 ; Timer V TCSRV: .res.b 1 TCORA: .res.b 1 TCORB: .res.b 1 TCNTV: .res.b 1 TCRV1: .res.b 1 TMA: .res.b 1 ; H'FFA6 ; Timer A TCA: .res.b 1 SMR: .res.b 1 ; H'FFA8 ; SCI3 BRR: .res.b 1 SCR3: .res.b 1 TDR: .res.b 1 SSR: .res.b 1 RDR: .res.b 1 .RES.B 2 ADDRA: .res.b 2 ; H'FFB0 ; A/D Converter ADDRB: .res.b 2 ADDRC: .res.b 2 ADDRD: .res.b 2 ADCSR: .res.b 1 ADCR: .res.b 1 .RES.B 6 TCSRWD: .res.b 1 ; H'FFC0 ; WDT TCWD: .res.b 1 TMWD: .res.b 1 .RES.B 1 ICCR: .res.b 1 ; H'FFC4 ; IIC ICSR: .res.b 1 SARX: .res.b 1 SAR: .res.b 1 ABRKCR: .res.b 1 ; H'FFC8 ; Address break ABRKSR: .res.b 1 BARH: .res.b 1 BARL: .res.b 1 BDRH: .res.b 1 BDRL: .res.b 1 .RES.B 2 PUCR1: .res.b 1 ; H'FFD0 ; I/O Port PUCR5: .res.b 1 .RES.B 2 PDR1: .res.b 1 PDR2: .res.b 1 .RES.B 2 PDR5: .res.b 1 .RES.B 1 PDR7: .res.b 1 PDR8: .res.b 1 .RES.B 1 PDRB: .res.b 1 .RES.B 2 PMR1: .res.b 1 PMR5: .res.b 1 .RES.B 2 PCR1: .res.b 1 PCR2: .RES.B 1 .RES.B 2 PCR5: .RES.B 1 .RES.B 1 PCR7: .RES.B 1 PCR8: .RES.B 1 .RES.B 4 SYSCR1: .RES.B 1 ; H'FFF0 ; System control SYSCR2: .RES.B 1 IEGR1: .RES.B 1 ; H'FFF2 ; Interrupt IEGR2: .RES.B 1 IENR1: .RES.B 1 .RES.B 1 IRR1: .RES.B 1 .RES.B 1 IWPR: .RES.B 1 MSTCR1: .RES.B 1 ; H'FFF9 ; Power save .RES.B 2 TSCR: .RES.B 1 ; H'FFFC ; IIC .SECTION ROM, DATA, LOCATE=H'4000 .DATA.W H'0000 ;5555 ; .DATA.B H'F7, H'84, H'F7, H'DC, H'00, H'0A, H'53, H'45 ; .DATA.B H'43, H'3D, H'35, H'30, H'0D, H'00, H'14, H'4D ; .DATA.B H'49, H'4E, H'3D, H'35, H'39, H'0D, H'00, H'1E ; .DATA.B H'48, H'4F, H'52, H'3D, H'32, H'33, H'0D, H'00 ; .DATA.B H'28, H'41, H'3D, H'53, H'45, H'43, H'0D, H'00 ; .DATA.B H'32, H'49, H'46, H'20, H'41, H'3D, H'53, H'45 ; .DATA.B H'43, H'20, H'47, H'4F, H'54, H'4F, H'20, H'35 ; .DATA.B H'30, H'0D, H'00, H'3C, H'50, H'52, H'49, H'4E ; .DATA.B H'54, H'20, H'53, H'45, H'43, H'2C, H'4D, H'49 ; .DATA.B H'4E, H'2C, H'48, H'4F, H'52, H'2C, H'44, H'41 ; .DATA.B H'59, H'0D, H'00, H'46, H'47, H'4F, H'54, H'4F ; .DATA.B H'20, H'34, H'30, H'0D .END