; 2004 Sep 30 .CPU 300HA:20 BUFSIZE .EQU 128 RAMFIX .EQU H'FFFF ROMFIX .EQU 0 .SECTION BASIC,DATA,LOCATE=H'0 .DATA.L RESET .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L NMI .DATA.L TRAPA0 .DATA.L TRAPA1 .DATA.L TRAPA2 .DATA.L TRAPA3 .DATA.L IRIRQ0 .DATA.L IRIRQ1 .DATA.L IRIRQ2 .DATA.L IRIRQ3 .DATA.L IRIRQ4 .DATA.L IRIRQ5 .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L TIMER .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L IRLED .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .DATA.L RSV .SECTION MAIN,CODE,LOCATE=H'100 RESET: MOV.L #STACK,SP ; Set stack pointer MOV.W #LWORD TEXTRAM,R3 BSR ROMRAM ; Set upper address MOV.W R3,@OTOP MOV.W R3,@OBTM MOV.W #0,R3 MOV.W R3,@ZERO ANDC #H'7F,CCR BSR INITIO ; Initialize IO TRAPA #0 ; Hello message MOV.W @H'10000,R0 ; Check ROM on program CMP.W #H'5555,R0 BEQ PLOAD ; START: MOV.L #STACK,SP BSR CRLF MOV.W #LWORD OKMES,R4 SUB R0L,R0L BSR MSGP 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 PUSH.W R2 MOV.W #LWORD LBUF,R2 BSR GINT BSR SKPBL POP.W R1 CMP.W #0,R3 BEQ KWCPR 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 STC.B CCR,R6L PUSH.W R2 LDC.B R6L,CCR BNE MOVE PUSH.W R2 BSR SKIPL POP.W R1 MOV.W @OBTM,R3 BSR TRNSF 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 ADD.W R0,R3 MOV.W #LWORD VTOP,R2 CMP.W R2,R3 BCC ERSRY MOV.W R3,@OBTM POP.W R2 BSR TR2 POP.W R2 POP.W R3 BSR TRNSF BRA EDITR RETSUB: RTS ; ; GETL: MOV.W #LWORD RAMFIX,E5 MOV.W #LWORD LBUF+BUFSIZE,R5 BSR PUT MOV.W #LWORD LBUF,R2 MOV.W R2,R6 GETL1: BSR BREAK BEQ GETL1 CMP.B #H'A,R0L BEQ GETL1 CMP.B #8,R0L BEQ CRUB CMP.B #0,R0L BEQ GETL1 BSR PUT MOV.B R0L,@R2 INC.W #1,R2 CMP.B #H'0D,R0L BEQ RETSUB CMP.W R2,R5 BNE GETL1 CRUB: CMP.W R2,R6 BEQ GETL1 DEC.W #1,R2 MOV.B #8,R0L BSR PUT BRA GETL1 ; SRCH: BTST.B #7,R3H BNE ERHOW MOV.W @OTOP,R2 SRCH1: MOV.W @OBTM,R5 DEC.W #1,R5 CMP.W R2,R5 BCS RETSUB MOV.B @R2,R4H MOV.B @(1,R2),R4L CMP.W R3,R4 BCS SKIPL 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 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 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 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 HELP .DATA.W LWORD HLPVER .DATA.W LWORD LETDF ; TIMCMD: MOV.W #LWORD TIMOP,R5 MOV.W #LWORD TIMOPAD,R4 BRA NXTKW TIMOP: .SDATA "MIN"<0> .SDATA "HOR"<0> .SDATA "DAY"<0> .SDATA "RUN"<0> .SDATA "STP"<0> .SDATA "CLR"<0> .DATA.B 0 .DATA.B 0 TIMOPAD: .DATA.W LWORD TIMMIN .DATA.W LWORD TIMHOR .DATA.W LWORD TIMDAY .DATA.W LWORD TIMRUN .DATA.W LWORD TIMSTP .DATA.W LWORD TIMCLR .DATA.W LWORD TIMSLW ; OPCMD: MOV.W #LWORD OPOP,R5 MOV.W #LWORD OPOPAD,R4 BRA NXTKW OPOP: .SDATA "D1"<0> .SDATA "D2"<0> .SDATA "D3"<0> .SDATA "D4"<0> .SDATA "D5"<0> .SDATA "D6"<0> .SDATA "D8"<0> .SDATA "DA"<0> .SDATA "DB"<0> .SDATA "U2"<0> .SDATA "U4"<0> .SDATA "U5"<0> .SDATA "1"<0> .SDATA "2"<0> .SDATA "3"<0> .SDATA "4"<0> .SDATA "5"<0> .SDATA "6"<0> .SDATA "8"<0> .SDATA "A"<0> .SDATA "B"<0> .DATA.B 0 .DATA.B 0 OPOPAD: .DATA.W LWORD OPD1 .DATA.W LWORD OPD2 .DATA.W LWORD OPD3 .DATA.W LWORD OPD4 .DATA.W LWORD OPD5 .DATA.W LWORD OPD6 .DATA.W LWORD OPD8 .DATA.W LWORD OPDA .DATA.W LWORD OPDB .DATA.W LWORD OPU2 .DATA.W LWORD OPU4 .DATA.W LWORD OPU5 .DATA.W LWORD OP1 .DATA.W LWORD OP2 .DATA.W LWORD OP3 .DATA.W LWORD OP4 .DATA.W LWORD OP5 .DATA.W LWORD OP6 .DATA.W LWORD OP8 .DATA.W LWORD OPA .DATA.W LWORD OPB .DATA.W LWORD ERWHT ; CMDIRQ: MOV.W #LWORD CMIRQTL,R5 MOV.W #LWORD CMIRQAD,R4 BRA NXTKW 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 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 ; HELP: MOV.W #LWORD HLPWD,R5 MOV.W #LWORD HLPAD,R4 BRA NXTKW HLPWD: .SDATA "LIST"<0> .SDATA "RUN"<0> .SDATA "NEW"<0> .SDATA "DUMP"<0> .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 "TIMFWD"<0> .SDATA "TIMBWD"<0> .SDATA "TIMORG"<0> .SDATA "TIMRUN"<0> .SDATA "TIMSTP"<0> .SDATA "OP1"<0> .SDATA "OP2"<0> .SDATA "OP3"<0> .SDATA "OP4"<0> .SDATA "OP5"<0> .SDATA "OP6"<0> .SDATA "OP8"<0> .SDATA "OPA"<0> .SDATA "OPB"<0> .SDATA "OPD1"<0> .SDATA "OPD2"<0> .SDATA "OPD3"<0> .SDATA "OPD4"<0> .SDATA "OPD5"<0> .SDATA "OPD6"<0> .SDATA "OPD8"<0> .SDATA "OPDA"<0> .SDATA "OPDB"<0> .SDATA "OPU2"<0> .SDATA "OPU4"<0> .SDATA "OPU5"<0> .SDATA "OPD"<0> .SDATA "OP"<0> .SDATA "IRQO"<0> .SDATA "IRQ1"<0> .SDATA "IRQ2"<0> .SDATA "IRQ3"<0> .SDATA "IRQ4"<0> .SDATA "IRQ5"<0> .SDATA "IRQ"<0> .SDATA "IRSTP0"<0> .SDATA "IRSTP1"<0> .SDATA "IRSTP2"<0> .SDATA "IRSTP3"<0> .SDATA "IRSTP4"<0> .SDATA "IRSTP5"<0> .SDATA "IRSTP"<0> .SDATA "LED"<0> .SDATA "LEDINT"<0> .SDATA "LEDSTP"<0> .SDATA "ABS"<0> .SDATA "SIZE"<0> .SDATA "TIM"<0> .SDATA "HEX"<0> .SDATA "MOD"<0> .SDATA "ADA"<0> .SDATA "ADB"<0> .SDATA "ADC"<0> .SDATA "ADD"<0> .SDATA "ADE"<0> .SDATA "ADF"<0> .SDATA "ADG"<0> .SDATA "ADH"<0> .SDATA "AD"<0> .SDATA "IN1"<0> .SDATA "IN2"<0> .SDATA "IN3"<0> .SDATA "IN4"<0> .SDATA "IN5"<0> .SDATA "IN6"<0> .SDATA "IN8"<0> .SDATA "INA"<0> .SDATA "INB"<0> .SDATA "IN"<0> .SDATA "PEEK"<0> .SDATA "AND"<0> .SDATA "OR"<0> .SDATA "XOR"<0> .SDATA "NOT"<0> .SDATA "NEG"<0> .SDATA "RLL"<0> .SDATA "RLR"<0> .SDATA "BCD"<0> .SDATA "VER"<0> .SDATA "?"<0> .SDATA "PIN"<0> .SDATA "NARITA"<0> .SDATA "TAKATO"<0> .DATA.B 0 HLPAD: .DATA.W LWORD HLPLIST .DATA.W LWORD HLPRUN .DATA.W LWORD HLPNEW .DATA.W LWORD HLPDUMP .DATA.W LWORD HLPLET .DATA.W LWORD HLPGOTO .DATA.W LWORD HLPGOSUB .DATA.W LWORD HLPRETURN .DATA.W LWORD HLPIF .DATA.W LWORD HLPFOR .DATA.W LWORD HLPNEXT .DATA.W LWORD HLPMS .DATA.W LWORD HLPSEC .DATA.W LWORD HLPMIN .DATA.W LWORD HLPHOR .DATA.W LWORD HLPDAY .DATA.W LWORD HLPREM .DATA.W LWORD HLPINPUT .DATA.W LWORD HLPPRINT .DATA.W LWORD HLPSTOP .DATA.W LWORD HLPTIMFWD .DATA.W LWORD HLPTIMBWD .DATA.W LWORD HLPTIMORG .DATA.W LWORD HLPTIMRUN .DATA.W LWORD HLPTIMSTP .DATA.W LWORD HLPOP1 .DATA.W LWORD HLPOP2 .DATA.W LWORD HLPOP3 .DATA.W LWORD HLPOP4 .DATA.W LWORD HLPOP5 .DATA.W LWORD HLPOP6 .DATA.W LWORD HLPOP8 .DATA.W LWORD HLPOPA .DATA.W LWORD HLPOPB .DATA.W LWORD HLPOPD1 .DATA.W LWORD HLPOPD2 .DATA.W LWORD HLPOPD3 .DATA.W LWORD HLPOPD4 .DATA.W LWORD HLPOPD5 .DATA.W LWORD HLPOPD6 .DATA.W LWORD HLPOPD8 .DATA.W LWORD HLPOPDA .DATA.W LWORD HLPOPDB .DATA.W LWORD HLPOPU2 .DATA.W LWORD HLPOPU4 .DATA.W LWORD HLPOPU5 .DATA.W LWORD HLPOPD .DATA.W LWORD HLPOP .DATA.W LWORD HLPIRQ0 .DATA.W LWORD HLPIRQ1 .DATA.W LWORD HLPIRQ2 .DATA.W LWORD HLPIRQ3 .DATA.W LWORD HLPIRQ4 .DATA.W LWORD HLPIRQ5 .DATA.W LWORD HLPIRQ .DATA.W LWORD HLPIRSTP0 .DATA.W LWORD HLPIRSTP1 .DATA.W LWORD HLPIRSTP2 .DATA.W LWORD HLPIRSTP3 .DATA.W LWORD HLPIRSTP4 .DATA.W LWORD HLPIRSTP5 .DATA.W LWORD HLPIRSTP .DATA.W LWORD HLPLED .DATA.W LWORD HLPLEDINT .DATA.W LWORD HLPLEDSTP .DATA.W LWORD HLPABS .DATA.W LWORD HLPSIZE .DATA.W LWORD HLPTIM .DATA.W LWORD HLPHEX .DATA.W LWORD HLPMOD .DATA.W LWORD HLPADA .DATA.W LWORD HLPADB .DATA.W LWORD HLPADC .DATA.W LWORD HLPADD .DATA.W LWORD HLPADE .DATA.W LWORD HLPADF .DATA.W LWORD HLPADG .DATA.W LWORD HLPADH .DATA.W LWORD HLPFAD .DATA.W LWORD HLPIN1 .DATA.W LWORD HLPIN2 .DATA.W LWORD HLPIN3 .DATA.W LWORD HLPIN4 .DATA.W LWORD HLPIN5 .DATA.W LWORD HLPIN6 .DATA.W LWORD HLPIN8 .DATA.W LWORD HLPINA .DATA.W LWORD HLPINB .DATA.W LWORD HLPIN .DATA.W LWORD HLPPEEK .DATA.W LWORD HLPAND .DATA.W LWORD HLPOR .DATA.W LWORD HLPXOR .DATA.W LWORD HLPNOT .DATA.W LWORD HLPNEG .DATA.W LWORD HLPRLL .DATA.W LWORD HLPRLR .DATA.W LWORD HLPBCD .DATA.W LWORD HLPVER .DATA.W LWORD HLPALL .DATA.W LWORD HLPPIN .DATA.W LWORD HLPNARITA .DATA.W LWORD HLPNARITA .DATA.W LWORD HLPHLP ; SKPBL: MOV.B @R2,R0L CMP.B #H'20,R0L BNE RETSUB INC.W #1,R2 BRA SKPBL ; NEW: BSR TSCR2 MOV.W @OTOP,R3 MOV.W R3,@OBTM STOP: BSR TSCR2 BRA START ; CMIRQ: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE LERR INC.W #1,R2 BSR EEXPR MOV.W R3,@EVIRQ BRA ENDL ; CMIRQ0: BSR EEXPR 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 ; CMSTP0: MOV.W #0,R3 MOV.W R3,@ADIRQ0 MOV.B @IER,R3L AND.B #H'FF,R3L MOV.B R3L,@IER BRA ENDL ; IRIRQ0: PUSH.L ER0 PUSH.L ER1 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.L ER1 POP.L ER0 RTE ir8: XOR.W R0,R0 ir9: MOV.W R0,@MS POP.L ER1 POP.L ER0 RTE ir77: XOR.W R0,R0 MOV.W R0,@SEC MOV.W @ADJMIN,R0 MOV.W R0,@MS POP.L ER1 POP.L ER0 RTE ir66: XOR.W R0,R0 MOV.W R0,@MIN MOV.W R0,@SEC MOV.W @ADJHOR,R0 MOV.W R0,@MS POP.L ER1 POP.L ER0 RTE ; CMIRQ1: BSR EEXPR 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 ; CMSTP1: MOV.W #0,R3 MOV.W R3,@ADIRQ1 MOV.B @IER,R3L AND.B #H'FD,R3L MOV.B R3L,@IER BRA ENDL ; IRIRQ1: PUSH.L ER3 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.L ER3 RTE ; CMIRQ2: BSR EEXPR 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 ; CMSTP2: MOV.W #0,R3 MOV.W R3,@ADIRQ2 MOV.B @IER,R3L AND.B #H'FB,R3L MOV.B R3L,@IER BRA ENDL ; IRIRQ2: PUSH.L ER3 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.L ER3 RTE ; CMIRQ3: BSR EEXPR 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 ; CMSTP3: MOV.W #0,R3 MOV.W R3,@ADIRQ3 MOV.B @IER,R3L AND.B #H'F7,R3L MOV.B R3L,@IER BRA ENDL ; IRIRQ3: PUSH.L ER3 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.L ER3 RTE ; CMIRQ4: BSR EEXPR 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 ; CMSTP4: MOV.W #0,R3 MOV.W R3,@ADIRQ4 MOV.B @IER,R3L AND.B #H'FE,R3L MOV.B R3L,@IER BRA ENDL ; IRIRQ4: PUSH.L ER3 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.L ER3 RTE ; CMIRQ5: BRA ENDL ; CMSTP5: BRA ENDL ; IRIRQ5: RTE ; GOSUB: BSR PSHV BSR EEXPR PUSH.W R2 BSR SRCH BNE ERHW1 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 ; RETRN: BSR TSCR2 MOV.W @RSTCK,R3 OR.W R3,R3 BEQ ERWHT MOV.W R3,R7 POP.W R3 MOV.W R3,@RSTCK POP.W R3 MOV.W R3,@CLABL POP.W R2 BSR POPV BRA ENDL ; PSHV: MOV.W #LWORD TMSTK,R3 POP.L ER1 CMP.W R3,R7 BCS ERSRY MOV.W @FCNTR,R3 OR.W R3,R3 BEQ NPSH 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.L ER1 MOV.W #RAMFIX,E1 RTS ; POPV: POP.L ER1 POP.W R3 MOV.W R3,@FCNTR OR.W R3,R3 BEQ NPOP 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.L ER1 MOV.W #RAMFIX,E1 RTS ; IFSTM: BSR EEXPR OR.W R3,R3 BNE NXTGO REM: MOV.W #0,R3 BSR SKPL2 BCC RUN2 BRA START ; FOR: BSR PSHV BSR LTSUB MOV.W R3,@FCNTR MOV.W #LWORD KWTO,R5 MOV.W #LWORD KWTOAD,R4 BRA NXTKW KWTO: .SDATA "TO" .DATA.B 0 .DATA.B 0 KWTOAD: .DATA.W LWORD FORTO .DATA.W LWORD ERWHT FORTO: BSR EEXPR MOV.W R3,@FTOV MOV.W #LWORD KWSTP,R5 MOV.W #LWORD KWSTPAD,R4 BRA NXTKW KWSTP: .SDATA "STEP" .DATA.B 0 .DATA.B 0 KWSTPAD: .DATA.W LWORD FSTEP .DATA.W LWORD FSTP1 FSTEP: BSR EEXPR BRA FORO FSTP1: MOV.W #1,R3 FORO: MOV.W R3,@FSTPV MOV.W @CLABL,R3 MOV.W R3,@FLABL MOV.W R2,@FOBJ BRA ENDL NEXT: MOV.W #H'FFFF,E6 BSR TSTV BCS ERWHT MOV.W @FCNTR,R6 ;Address CMP.W R6,R3 BNE ERWHT MOV.W @R6,R0 MOV.W @FSTPV,R6 BPL NXTP ADD.W R6,R0 MOV.W R0,@R3 MOV.W @FTOV,R6 CMP.W R0,R6 BGT NXT1 MOV.W @FLABL,R3 MOV.W R3,@CLABL MOV.W @FOBJ,R2 BRA ENDL NXTP: ADD.W R6,R0 MOV.W R0,@R3 MOV.W @FTOV,R6 CMP.W R0,R6 BCS NXT1 MOV.W @FLABL,R3 MOV.W R3,@CLABL MOV.W @FOBJ,R2 BRA ENDL NXT1: BSR POPV BRA ENDL LIST: BSR GINT BSR TSCR2 BSR SRCH LISTL: BCS START BSR WLINE BSR BREAK BSR SRCH1 BRA LISTL WLINE: MOV.B @R2,R3H INC.W #1,R2 MOV.B @R2,R3L INC.W #1,R2 MOV.B #4,R1L BSR WINT MOV.B #H'20,R0L BSR PUT SUB.B R0L,R0L BSR MSG RTS PRINT: MOV.B #6,R1L BSR SKPBL PRSC: MOV.B @R2,R0H CMP.B #";",R0H BNE PRCR INC.W #1,R2 BSR CRLF BRA NXTGO PRCR: MOV.B @R2,R0H CMP.B #H'D,R0H BNE PRSHA INC.W #1,R2 BSR CRLF BRA RUN1 PRSHA: MOV.B @R2,R0H CMP.B #"#",R0H BNE PRLTR INC.W #1,R2 BSR EEXPR MOV.B R3L,R1L BRA PRCMA PRLTR: BSR PRSUB BRA PREXP PRCMA: MOV.B @R2,R0H CMP.B #",",R0H BNE PREND INC.W #1,R2 BSR TSTSC BRA PRSHA PREND: BSR CRLF BRA ENDL PREXP: BSR EEXPR PUSH.W R1 BSR WINT POP.W R1 BRA PRCMA PRSUB: BSR SKPBL MOV.B @R2,R0H CMP.B #H'22,R0H BNE PR13 INC.W #1,R2 MOV.B #H'22,R0L BRA PR11 PR13: MOV.B @R2,R0H CMP.B #"'",R0H BNE PR14 INC.W #1,R2 MOV.B #H'27,R0L PR11: BSR MSG BSR SKPBL CMP.B #",",R0L BNE PR14 POP.W R6 POP.W R6 BRA PRCMA PR14: MOV.B @R2,R0H CMP.B #H'D,R0H BNE PR15 POP.W R6 POP.W R6 BRA PRCR PR15: MOV.B @R2,R0H CMP.B #";",R0H BNE PR16 INC.W #1,R2 POP.W R6 POP.W R6 BRA NXTGO 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 MOV.B #"-",R6L NEG.L ER5 WNT1: CMP.W R4,R5 BLT WNT4 DIVXU.W R4,ER5 PUSH.W E5 INC.B R6H EXTS.L ER5 BRA WNT1 WNT4: PUSH.W R5 INC.B R6H SUB.B R6H,R1L BLE WNT5 WNT6: MOV.B #H'20,R0L BSR PUT DEC.B R1L BNE WNT6 WNT5: MOV.B R6L,R0L BSR PUT WNT3: OR.B R6H,R6H BEQ WNT2 POP.W R0 DEC.B R6H ADD.B #H'30,R0L BSR PUT BRA WNT3 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 PUSH.W R2 MOV.B @R2,R0L CMP.B #"%",R0L BNE INPT1 INC.W #1,R2 BSR TSTV BRA INPT4 INPT1: BSR TSTV BCS ERWHT MOV.B @R2,R0H SUB.B R0L,R0L MOV.B R0L,@R2 POP.W R2 BSR MSG 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 MOV.W #LWORD LBUF,R2 BSR EEXPR 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 INC.W #1,R2 BRA INPUT LETDF: BSR TSCR1 CMP.B #H'D,R0L BEQ ENDL LET: BSR LTSUB MOV.B @R2,R0H CMP.B #",",R0H BNE ENDL INC.W #1,R2 BRA LET LTSUB: BSR TSTV BCS ERWHT PUSH.W R3 BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE LERR INC.W #1,R2 BSR EEXPR MOV.W R3,R1 POP.W R3 MOV.W R1,@R3 RTS GOTO: BSR EEXPR PUSH.W R2 BSR TSCR2 BSR SRCH BNE ERHW1 POP.W R0 BRA RUN2 RUN: BSR TSCR2 RUNN: MOV.W @OTOP,R2 RUN1: MOV.W #0,R3 BSR SRCH1 BCS START RUN2: MOV.W R2,@CLABL INC.W #2,R2 NXTGO: BSR BREAK MOV.W #LWORD STMKW,R5 MOV.W #LWORD STMAD,R4 BRA NXTKW ENDL: BSR TSTSC LERR: BRA ERWHT TSTSC: MOV.B @R2,R0H CMP.B #";",R0H BNE TSCR1 INC.W #1,R2 POP.L ER6 BRA NXTGO TSCR1: MOV.B @R2,R0H CMP.B #H'D,R0H BNE TSRTN INC.W #1,R2 POP.L ER6 BRA RUN1 TSRTN: RTS TSCR2: BSR SKPBL CMP.B #H'D,R0L BEQ RETSUB BRA ERWHT EEXPR: BSR EXPR PUSH.W R3 MOV.W #LWORD ROPKW,R5 MOV.W #LWORD ROPKWAD,R4 BRA NXTKW 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 POP.W R6 CMP.W R3,R6 BGE RETTRU BRA RETFAL NEm: BSR EXPR POP.W R6 CMP.W R3,R6 BNE RETTRU BRA RETFAL GTm: BSR EXPR POP.W R6 CMP.W R3,R6 BGT RETTRU BRA RETFAL LEm: BSR EXPR POP.W R6 CMP.W R3,R6 BLE RETTRU BRA RETFAL EQm: BSR EXPR POP.W R6 CMP.W R3,R6 BEQ RETTRU BRA RETFAL LTm: BSR EXPR POP.W R6 CMP.W R3,R6 BLT RETTRU BRA RETFAL NOROP: POP.W R3 RTS RETFAL: MOV.W #0,R3 RTS RETTRU: MOV.W #-1,R3 RTS EXPR: BSR SKPBL MOV.B @R2,R0H CMP.B #"-",R0H BNE EXPR1 INC.W #1,R2 MOV.W #0,R3 BRA NEGA1 EXPR1: MOV.B @R2,R0H CMP.B #"+",R0H BNE EXPR3 INC.W #1,R2 EXPR3: BSR TERM EXPR2: MOV.B @R2,R0H CMP.B #"+",R0H BNE NEGA0 INC.W #1,R2 PUSH.W R3 BSR TERM POP.W R0 ADD.W R0,R3 BVS ERSRY BRA EXPR2 NEGA0: MOV.B @R2,R0H CMP.B #"-",R0H BNE EXPRT INC.W #1,R2 NEGA1: PUSH.W R3 BSR TERM POP.W R0 SUB.W R3,R0 MOV.W R0,R3 BRA EXPR2 TERM: BSR FACTR MULT: MOV.B @R2,R0H CMP.B #"*",R0H BNE DIV INC.W #1,R2 PUSH.W R3 BSR FACTR MOV.W R3,R0 POP.W R3 MULXS.W R3,ER0 MOV.W R0,R3 BLD #7,R0H BCS ML1 CMP.W #0,E0 BNE ERHW1 BRA MULT ML1: CMP.W #H'FFFF,E0 BNE ERHW1 BRA MULT DIV: MOV.B @R2,R0H CMP.B #"/",R0H BNE EXPRT INC.W #1,R2 PUSH.W R3 BSR FACTR POP.W R0 CMP.W #0,R3 BEQ ERHW1 EXTS.L ER0 DIVXS.W R3,ER0 MOV.W R0,R3 MOV.W E0,@MODn BRA MULT EXPRT: MOV.W #H'FFFF,E3 RTS OP1: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P1DR BRA ENDL OPD1: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@PIDDR BRA ENDL IN1: MOV.B @P1DR,R3L MOV.B #0,R3H RTS OP2: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P2DR BRA ENDL OPD2: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P2DDR BRA ENDL OPU2: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P2PCR BRA ENDL IN2: MOV.B @P2DR,R3L MOV.B #0,R3H RTS OP3: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P3DR BRA ENDL OPD3: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P3DDR BRA ENDL IN3: MOV.B @P3DR,R3L MOV.B #0,R3H RTS OP4: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P4DR BRA ENDL OPD4: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P4DDR BRA ENDL OPU4: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P4PCR BRA ENDL IN4: MOV.B @P4DR,R3L MOV.B #0,R3H RTS OP5: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P5DR BRA ENDL OPD5: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P5DDR BRA ENDL OPU5: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P5PCR BRA ENDL IN5: MOV.B @P5DR,R3L MOV.B #0,R3H RTS OP6: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P6DR BRA ENDL OPD6: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P6DDR BRA ENDL IN6: MOV.B @P6DR,R3L MOV.B #0,R3H RTS IN7: MOV.B @P7DR,R3L MOV.B #0,R3H RTS OP8: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P8DR BRA ENDL OPD8: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@P8DDR BRA ENDL IN8: MOV.B @P8DR,R3L MOV.B #0,R3H RTS OPA: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@PADR BRA ENDL OPDA: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@PADDR BRA ENDL INA: MOV.B @PADR,R3L MOV.B #0,R3H RTS OPB: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@PBDR BRA ENDL OPDB: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B R3L,@PBDDR BRA ENDL INB: MOV.B @PBDR,R3L MOV.B #0,R3H RTS DUMP: MOV.W @OTOP,R1 MOV.W @OBTM,R3 CMP.W R3,R1 BCC DEND BSR DMPDT MOV.B R1H,R0H BSR HCOUT BSR HCOUT1 MOV.B R1L,R0H BSR HCOUT BSR HCOUT1 MOV.B R3H,R0H BSR HCOUT BSR HCOUT1 MOV.B R3L,R0H BSR HCOUT BSR HCOUT1 DMP1: MOV.B @R1,R0H BSR HCOUT INC.W #1,R1 MOV.B R1L,R0L AND.B #7,R0L BSR DMPLF CMP.W R3,R1 BCS DMP1 DEND: BRA ENDL DMPLF: BNE DMP2 BSR CRLF BSR DMPDT RTS DMP2: BSR HCOUT1 RTS DMPDT: MOV.B #H'9,R0L BSR PUT MOV.B #".",R0L BSR PUT MOV.B #"D",R0L BSR PUT MOV.B #"A",R0L BSR PUT MOV.B #"T",R0L BSR PUT MOV.B #"A",R0L BSR PUT MOV.B #".",R0L BSR PUT MOV.B #"B",R0L BSR PUT RTS HCOUT: MOV.B #" ",R0L BSR PUT MOV.B #"H",R0L BSR PUT MOV.B #"'",R0L BSR PUT BSR HXOUT RTS HCOUT1: MOV.B #",",R0L BSR PUT 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 MOV.B R0H,R0L AND.B #H'F,R0L BSR HX1 RTS HX1: CMP.B #H'A,R0L BCC HX2 ADD.B #H'30,R0L BSR PUT RTS HX2: ADD.B #H'37,R0L BSR PUT RTS PLOAD: MOV.W #1,R0 ; Program load from ROM MOV.L #H'10000,ER6 ADD.W R0,R0 ADD.W R0,R6 MOV.W @R6,R6 MOV.W @R6,R1 INC.W #2,R6 MOV.W @R6,R3 DEC.W #2,R6 CMP.W R3,R1 BCC START SUB.W R1,R3 INC.W #2,R3 INC.W #2,R3 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 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 FACTR: MOV.W #LWORD FNKW,R5 MOV.W #LWORD FNKWAD,R4 BRA NXTKW 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 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 FNINFN: .SDATA "1"<0> .SDATA "2"<0> .SDATA "3"<0> .SDATA "4"<0> .SDATA "A"<0> .SDATA "B"<0> .SDATA "5"<0> .SDATA "6"<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 IN3 .DATA.W LWORD IN4 .DATA.W LWORD INA .DATA.W LWORD INB .DATA.W LWORD IN5 .DATA.W LWORD IN6 .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 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 FNTIM: MOV.W #LWORD TIMTBL,R5 MOV.W #LWORD TIMADR,R4 BRA NXTKW 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 FNABS: BSR EXPRO BSR ABS RTS ABS: AND.W R3,R3 BPL RETSUB NEG.W R3 RTS RSIZE: MOV.W @OBTM,R6 ; SIZE MOV.W #LWORD VTOP,R3 SUB.W R6,R3 RTS VARI: BSR TSTV BCS NUMB MOV.W R3,R6 MOV.W #H'FFFF,E6 MOV.B @R6,R3H MOV.B @(1,R6),R3L RTS TSTV: BSR SKPBL MOV.B #H'40,R0H ; @ SUB.B R0H,R0L BCS RETSUB BNE TSTV1 INC.W #1,R2 BSR EXPRO ADD.W R3,R3 BVS ERHOW MOV.W #LWORD VTOP,R6 SUB.W R3,R6 MOV.W @OBTM,R3 CMP.W R3,R6 BCS ERSY1 MOV.W R6,R3 RTS TSTV1: CMP.B #H'1B,R0L BCC ERHOW 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 MOV.B R1H,R0L OR.B R0L,R0L BNE RETSUB EXPRO: MOV.B @R2,R0H CMP.B #"(",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B @R2,R0H CMP.B #")",R0H BNE ERWHT INC.W #1,R2 RTS FNIRQ: MOV.W @EVIRQ,R3 RTS PEEK: BSR EXPRO MOV.W R3,R1 MOV.W @R1,R3 RTS FNAND: MOV.B @R2,R0H CMP.B #"(",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B @R2,R0H CMP.B #",",R0H BNE ERWHT INC.W #1,R2 PUSH.W R3 BSR EEXPR CMP.B #")",R0L BNE ERWHT INC.W #1,R2 POP.W R6 AND.W R6,R3 RTS FNOR: MOV.B @R2,R0H CMP.B #"(",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B @R2,R0H CMP.B #",",R0H BNE ERWHT INC.W #1,R2 PUSH.W R3 BSR EEXPR CMP.B #")",R0L BNE ERWHT INC.W #1,R2 POP.W R6 OR.W R6,R3 RTS FNXOR: MOV.B @R2,R0H CMP.B #"(",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.B @R2,R0H CMP.B #",",R0H BNE ERWHT INC.W #1,R2 PUSH.W R3 BSR EEXPR CMP.B #")",R0L BNE ERWHT INC.W #1,R2 POP.W R6 XOR.W R6,R3 RTS FNNOT: BSR EXPRO NOT.W R3 RTS FNNEG: BSR EXPRO NEG.W R3 RTS FNRLL: BSR EXPRO ROTL.W R3 ROTL.W R3 ROTL.W R3 ROTL.W R3 RTS FNRLR: BSR EXPRO 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 ERHOW: PUSH.W R2 ERHW1: MOV.W #LWORD HOWMS,R4 BRA LERMS ERSRY: PUSH.W R2 ERSY1: MOV.W #LWORD SRYMS,R4 LERMS: MOV.W #RAMFIX,E3 SUB.B R0L,R0L BSR MSGP 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 BMI ERRIN BSR WLINE DEC.W #1,R2 POP.W R0 MOV.B R0L,@R2 MOV.B #H'3F,R0L ; ? BSR PUT SUB.B R0L,R0L BSR MSG BRA START 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 BSR PUT CMP.B #H'D,R0L BNE MSG1 RTS MSG: MOV.B R0L,R1H MSG11: MOV.B @R2,R0L INC.W #1,R2 CMP.B R1H,R0L BEQ RETSUB BSR PUT CMP.B #H'D,R0L BNE MSG11 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 BSR PUT BRA MSGA GINT: MOV.W #0,R3 MOV.B R3H,R1H BSR SKPBL GET11: CMP.B #H'30,R0L BCS RETSUB CMP.B #H'3A,R0L BHS RETSUB 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 MOV.B @R2,R0L BRA GET11 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: PUSH.L ER0 MOV.W #H'FFFF,E0 MOV.W @TIMCNST,R0 CMP.W #H'9C40,R0 BEQ TMSLW MOV.W @MS,R0 INC.W #1,R0 CMP.W #1000,R0 BNE INT9 MOV.W @SEC,R0 INC.W #1,R0 MOV.W R0,@SEC CMP.W #60,R0 BNE INT8 MOV.W @MIN,R0 INC.W #1,R0 MOV.W R0,@MIN CMP.W #60,R0 BNE INT77 MOV.W @HOR,R0 INC.W #1,R0 MOV.W R0,@HOR CMP.W #24,R0 BNE INT66 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 MOV.B @TSR0,R0L AND.B #H'FE,R0L MOV.B R0L,@TSR0 POP.L ER0 RTE INT8: XOR.W R0,R0 INT9: MOV.W R0,@MS MOV.B @TSR0,R0L AND.B #H'FE,R0L MOV.B R0L,@TSR0 POP.L ER0 RTE INT77: XOR.W R0,R0 MOV.W R0,@SEC MOV.W @ADJMIN,R0 MOV.W R0,@MS MOV.B @TSR0,R0L AND.B #H'FE,R0L MOV.B R0L,@TSR0 POP.L ER0 RTE INT66: XOR.W R0,R0 MOV.W R0,@MIN MOV.W R0,@SEC MOV.W @ADJHOR,R0 MOV.W R0,@MS MOV.B @TSR0,R0L AND.B #H'FE,R0L MOV.B R0L,@TSR0 POP.L ER0 RTE TMSLW: MOV.W @MS,R0 INC.W #1,R0 CMP.W #100,R0 BNE TSLW9 MOV.W @SEC,R0 INC.W #1,R0 MOV.W R0,@SEC CMP.W #60,R0 BNE TSLW8 MOV.W @MIN,R0 INC.W #1,R0 MOV.W R0,@MIN CMP.W #60,R0 BNE TSLW7 MOV.W @HOR,R0 INC.W #1,R0 MOV.W R0,@HOR CMP.W #24,R0 BNE TSLW6 MOV.W @DAY,R0 INC.W #1,R0 MOV.W R0,@DAY XOR.W R0,R0 TSLW6: MOV.W R0,@HOR XOR.W R0,R0 TSLW7: MOV.W R0,@MIN XOR.W R0,R0 TSLW8: MOV.W R0,@SEC XOR.W R0,R0 TSLW9: MOV.W R0,@MS MOV.B @TSR0,R0L AND.B #H'FE,R0L MOV.B R0L,@TSR0 POP.L ER0 RTE TMMS: MOV.W @TIMCNST,R3 CMP.W #H'9C40,R3 BEQ TSMS MOV.W @MS,R3 RTS TSMS: MOV.W @MS,R3 ADD.W R3,R3 MOV.W R3,R6 ADD.W R3,R3 ADD.W R3,R3 ADD.W R6,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 FNTMIN: MOV.W @ADJMIN,R3 RTS FNTHOR: MOV.W @ADJHOR,R3 RTS FNTDAY: MOV.W @ADJDAY,R3 RTS SETMS: BSR SKPBL MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT INC.W #1,R2 BSR EEXPR CMP.W #1000,R3 BCC ERHOW MOV.B #H'0A,R6L DIVXU.B R6L,R3 XOR.B R3H,R3H MOV.W R3,@MS BRA ENDL SETSEC: BSR SKPBL MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT INC.W #1,R2 BSR EEXPR CMP.W #60,R3 BCC ERHOW MOV.W R3,@SEC BRA ENDL SETMIN: BSR SKPBL MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT INC.W #1,R2 BSR EEXPR CMP.W #60,R3 BCC ERHOW MOV.W R3,@MIN BRA ENDL SETHOR: BSR SKPBL MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT INC.W #1,R2 BSR EEXPR CMP.W #24,R3 BCC ERHOW MOV.W R3,@HOR BRA ENDL SETDAY: BSR SKPBL MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.W R3,@DAY BRA ENDL TIMINT: MOV.W #0,R0 MOV.W R0,@ADA MOV.W R0,@ADB MOV.W R0,@ADC MOV.W R0,@ADD MOV.W R0,@ADE MOV.W R0,@ADF MOV.W R0,@ADG MOV.W R0,@ADH 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 RTS TIMMIN: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.W R3,@ADJMIN BRA ENDL TIMHOR: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.W R3,@ADJHOR BRA ENDL TIMDAY: BSR SKPBL MOV.B @R2,R0H CMP.B #"=",R0H BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.W R3,@ADJDAY BRA ENDL TIMRUN: MOV.B #H'C0,R0L MOV.B R0L,@TOER ; H'FFF90 MOV.B #H'A2,R0L MOV.B R0L,@TCR0 ; H'FFF64 MOV.B #H'8A,R0L MOV.B R0L,@TIOR0 ; H'FFF65 MOV.B #H'F9,R0L MOV.B R0L,@TIER0 ; H'FFF66 MOV.W #H'FA0,R0 MOV.W R0,@TIMCNST MOV.W R0,@GRA0 ; H'FFF6A MOV.B #H'E1,R0L MOV.B R0L,@TSTR ; Start Timer BRA ENDL TIMSLW: MOV.B #H'C0,R0L MOV.B R0L,@TOER ; H'FFF90 MOV.B #H'A2,R0L MOV.B R0L,@TCR0 ; H'FFF64 MOV.B #H'8A,R0L MOV.B R0L,@TIOR0 ; H'FFF65 MOV.B #H'F9,R0L MOV.B R0L,@TIER0 ; H'FFF66 MOV.W #H'9C40,R0 MOV.W R0,@TIMCNST MOV.W R0,@GRA0 ; H'FFF6A MOV.B #H'E1,R0L MOV.B R0L,@TSTR ; Start Timer BRA ENDL TIMSTP: MOV.B #H'E0,R0L MOV.B R0L,@TSTR BRA ENDL 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 BRA ENDL FNMIN: MOV.W @ADJMIN,R3 RTS FNHOR: MOV.W @ADJHOR,R3 RTS FNDAY: MOV.W @ADJDAY,R3 RTS LEDINT: BSR EXPRO 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 LEDSTP: MOV.B @TSTR,R0L AND.B #H'FB,R0L MOV.B R0L,@TSTR MOV.B #0,R0L MOV.B R0L,@P1DR BRA ENDL LEDDATA: BSR SKPBL MOV.B @R2,R0L CMP.B #"=",R0L BNE ERWHT INC.W #1,R2 BSR EEXPR MOV.W R3,@LED BRA ENDL FNLED: MOV.W @LED,R3 RTS IRLED: PUSH.L ER0 PUSH.L ER1 PUSH.L ER2 MOV.W #0,E1 MOV.W #H'FFFF,E2 MOV.W @LED,R1 MOV.W @LEDEX,R0 CMP.W #0,R0 BEQ IRLED1 CMP.W #1,R0 BEQ IRLED2 IRLED3: MOV.W @LEDSQ,R0 CMP.W #0,R0 BEQ LED13 CMP.W #1,R0 BEQ LED23 CMP.W #2,R0 BEQ LED33 CMP.W #3,R0 BEQ LED43 XOR.W R0,R0 MOV.W R0,@LEDSQ BRA IRLED3 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 LED23: MOV.W R1,R2 AND.W #H'F0,R2 BEQ LED232 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 LED232: MOV.W #H'0D,R2 BRA LEDDSP 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 LED43: MOV.W R1,R2 AND.W #H'F000,R2 BEQ LED432 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 LED432: MOV.W #H'07,R2 BRA LEDDSP IRLED2: MOV.W @LEDSQ,R0 CMP.W #0,R0 BEQ LED12 CMP.W #1,R0 BEQ LED22 CMP.W #2,R0 BEQ LED32 CMP.W #3,R0 BEQ LED42 XOR.W R0,R0 MOV.W R0,@LEDSQ BRA IRLED2 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 LED22: MOV.W R1,R2 AND.W #H'FFF0,R2 BEQ LED222 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 LED222: MOV.W #H'0D,R2 BRA LEDDSP LED32: MOV.W R1,R2 AND.W #H'FF00,R2 BEQ LED322 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 LED322: MOV.W #H'0B,R2 BRA LEDDSP LED42: MOV.W R1,R2 AND.W #H'F000,R2 BEQ LED422 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 LED422: MOV.W #H'07,R2 BRA LEDDSP IRLED1: MOV.W @LEDSQ,R0 CMP.W #0,R0 BEQ LED1 CMP.W #1,R0 BEQ LED2 CMP.W #2,R0 BEQ LED3 CMP.W #3,R0 BEQ LED4 XOR.W R0,R0 MOV.W R0,@LEDSQ BRA IRLED1 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 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 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 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.L ER2 POP.L ER1 POP.L ER0 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 FNADA: MOV.B #H'20,R0L MOV.B R0L,@ADCCSR AD1: MOV.B @ADCCSR,R0L AND.B #H'80,R0L BEQ AD1 MOV.W @ADCA,R3 BSR ADRLL RTS FNADB: MOV.B #H'21,R0L MOV.B R0L,@ADCCSR AD2: MOV.B @ADCCSR,R0L AND.B #H'80,R0L BEQ AD2 MOV.W @ADCB,R3 BSR ADRLL RTS FNADC: MOV.B #H'22,R0L MOV.B R0L,@ADCCSR AD3: MOV.B @ADCCSR,R0L AND.B #H'80,R0L BEQ AD3 MOV.W @ADCC,R3 BSR ADRLL RTS FNADD: MOV.B #H'23,R0L MOV.B R0L,@ADCCSR AD4: MOV.B @ADCCSR,R0L AND.B #H'80,R0L BEQ AD4 MOV.W @ADCD,R3 BSR ADRLL RTS FNADE: MOV.B #H'24,R0L MOV.B R0L,@ADCCSR AD5: MOV.B @ADCCSR,R0L AND.B #H'80,R0L BEQ AD5 MOV.W @ADCA,R3 BSR ADRLL RTS FNADF: MOV.B #H'25,R0L MOV.B R0L,@ADCCSR AD6: MOV.B @ADCCSR,R0L AND.B #H'80,R0L BEQ AD6 MOV.W @ADCB,R3 BSR ADRLL RTS FNADG: MOV.B #H'26,R0L MOV.B R0L,@ADCCSR AD7: MOV.B @ADCCSR,R0L AND.B #H'80,R0L BEQ AD7 MOV.W @ADCC,R3 BSR ADRLL RTS FNADH: MOV.B #H'27,R0L MOV.B R0L,@ADCCSR AD8: MOV.B @ADCCSR,R0L AND.B #H'80,R0L BEQ AD8 MOV.W @ADCD,R3 BSR ADRLL 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 HXIN: INC.W #1,R2 MOV.B @R2,R0L CMP.B #")",R0L BNE HXIN1 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 CMP.B #H'3A,R0L BCC HXIN2 AND.B #H'0F,R0L ADD.B R0L,R3L BRA HXIN HXIN2: AND.B #H'0F,R0L CMP.B #7,R0L BCC ERWHT MOV.B #9,R0H ADD.B R0H,R0L ADD.B R0L,R3L BRA HXIN FNMOD: MOV.W @MODn,R3 RTS FNBCD: BSR EXPRO BSR ABS 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 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 MOV.B #H'0A,R0L BSR PUT MOV.B #H'0D,R0L RTS RSOUT: BTST.B #7,@SCIISSR BEQ RSOUT MOV.B R0L,@SCIITDR BCLR.B #7,@SCIISSR RTS ; ***** INPUT ONE ASCII CHARACTOR ***** GET: MOV.B @SCIISSR,R0L AND.B #H'78,R0L BEQ GET BTST.B #6,@SCIISSR:8 BEQ RSINO1 MOV.B @SCI1RDR,R0L BCLR.B #6,@SCIISSR ANDC.B #H'FE,CCR RTS RSINO1: MOV.B #H'80,R0L MOV.B R0L,@SCIISSR ORC.B #1,CCR RTS ; Break Key Check BREAK: MOV.B #6,R0H BTST.B R0H,@SCIISSR:8 ; Test Bit 6 if dara recieved BEQ BRKRET MOV.B @SCI1RDR,R0L ; Move data to R0L BCLR.B #6,@SCIISSR:8 ; Recieved Bit Clear ANDC.B #H'FE,CCR ; Carry Flag Clear CMP #H'03,R0L ; Control+C BEQ START RTS BRKRET: XOR.B R0L,R0L MOV.B R0L,@SCIOSSR ;BCLR.B #5,@SCIISSR:8 ;BCLR.B #4,@SCIISSR:8 ;BCLR.B #3,@SCIISSR:8 RTS INITIO: MOV.B #H'F,R0L ; Initial Routin. FF MOV.B R0L,@PIDDR ; Set for Output MOV.B R0L,@P2DDR MOV.B R0L,@PBDDR MOV.B #H'23,R0L BSR INISCI0 ; RS-232C Port O BSR INISCI1 ; RS-232C Port 1 BSR TIMINT RTS INISCI0: MOV.B #0,R0L ; RS 232C port 0 MOV.B R0L,@SCIOSCR MOV.B #0,R0L MOV.B R0L,@SCIOSMR MOV.B #51,R0L MOV.B R0L,@SCIOBRR MOV.W #280,R0 INISC0: DEC.W #1,R0 BNE INISC0 MOV.B #H'30,R0L MOV.B R0L,@SCIOSCR MOV.B @SCIOSSR,R0L MOV.B #H'80,R0L MOV.B R0L,@SCIOSSR RTS INISCI1: MOV.B #0,R0L ; RS-232C Port 1 MOV.B R0L,@SCIISCR MOV.B #0,R0L MOV.B R0L,@SCIISMR MOV.B #51,R0L MOV.B R0L,@SCIIBRR MOV.W #280,R0 INISC1: DEC.W #1,R0 BNE INISC1 MOV.B #H'30,R0L MOV.B R0L,@SCIISCR MOV.B @SCIISSR,R0L MOV.B #H'80,R0L MOV.B R0L,@SCIISSR RTS TRAPA0: MOV.W #LWORD MYMSG,R4 SUB R0L,R0L BSR MSGP RTE TRAPA1: TRAPA2: TRAPA3: NMI: RSV: RTE HLPLIST: MOV.W #LWORD HPLIST,R4 BRA HLPPRN HLPRUN: MOV.W #LWORD HPRUN,R4 BRA HLPPRN HLPNEW: MOV.W #LWORD HPNEW,R4 BRA HLPPRN HLPDUMP: MOV.W #LWORD HPDUMP,R4 BRA HLPPRN HLPLET: MOV.W #LWORD HPLET,R4 BRA HLPPRN HLPGOTO: MOV.W #LWORD HPGOTO,R4 BRA HLPPRN HLPGOSUB: MOV.W #LWORD HPGOSUB,R4 BRA HLPPRN HLPRETURN: MOV.W #LWORD HPRETURN,R4 BRA HLPPRN HLPIF: MOV.W #LWORD HPIF,R4 BRA HLPPRN HLPFOR: MOV.W #LWORD HPFOR,R4 BRA HLPPRN HLPNEXT: MOV.W #LWORD HPNEXT,R4 BRA HLPPRN HLPMS: MOV.W #LWORD HPMS,R4 SUB R0L,R0L BSR MSGP MOV.W #LWORD HPFMS,R4 BRA HLPPRN HLPSEC: MOV.W #LWORD HPSEC,R4 SUB R0L,R0L BSR MSGP MOV.W #LWORD HPFSEC,R4 BRA HLPPRN HLPMIN: MOV.W #LWORD HPMIN,R4 SUB R0L,R0L BSR MSGP MOV.W #LWORD HPFMIN,R4 BRA HLPPRN HLPHOR: MOV.W #LWORD HPHOR,R4 SUB R0L,R0L BSR MSGP MOV.W #LWORD HPFHOR,R4 BRA HLPPRN HLPDAY: MOV.W #LWORD HPDAY,R4 SUB R0L,R0L BSR MSGP MOV.W #LWORD HPFDAY,R4 BRA HLPPRN HLPREM: MOV.W #LWORD HPREM,R4 BRA HLPPRN HLPINPUT: MOV.W #LWORD HPINPUT,R4 BRA HLPPRN HLPPRINT: MOV.W #LWORD HPPRINT,R4 BRA HLPPRN HLPSTOP: MOV.W #LWORD HPSTOP,R4 BRA HLPPRN HLPTIMFWD: MOV.W #LWORD HPTIMMIN,R4 BRA HLPPRN HLPTIMBWD: MOV.W #LWORD HPTIMHOR,R4 BRA HLPPRN HLPTIMORG: MOV.W #LWORD HPTIMDAY,R4 BRA HLPPRN HLPTIMRUN: MOV.W #LWORD HPTIMRUN,R4 BRA HLPPRN HLPTIMSTP: MOV.W #LWORD HPTIMSTP,R4 BRA HLPPRN HLPOP1: MOV.W #LWORD HPOP1,R4 BRA HLPPRN HLPOP2: MOV.W #LWORD HPOP2,R4 BRA HLPPRN HLPOP3: MOV.W #LWORD HPOP3,R4 BRA HLPPRN HLPOP4: MOV.W #LWORD HPOP4,R4 BRA HLPPRN HLPOP5: MOV.W #LWORD HPOP5,R4 BRA HLPPRN HLPOP6: MOV.W #LWORD HPOP6,R4 BRA HLPPRN HLPOP8: MOV.W #LWORD HPOP8,R4 BRA HLPPRN HLPOPA: MOV.W #LWORD HPOPA,R4 BRA HLPPRN HLPOPB: MOV.W #LWORD HPOPB,R4 BRA HLPPRN HLPOP: MOV.W #LWORD HPOP,R4 BRA HLPPRN HLPOPD1: MOV.W #LWORD HPOPD1,R4 BRA HLPPRN HLPOPD2: MOV.W #LWORD HPOPD2,R4 BRA HLPPRN HLPOPD3: MOV.W #LWORD HPOPD3,R4 BRA HLPPRN HLPOPD4: MOV.W #LWORD HPOPD4,R4 BRA HLPPRN HLPOPD5: MOV.W #LWORD HPOPD5,R4 BRA HLPPRN HLPOPD6: MOV.W #LWORD HPOPD6,R4 BRA HLPPRN HLPOPD8: MOV.W #LWORD HPOPD8,R4 BRA HLPPRN HLPOPDA: MOV.W #LWORD HPOPDA,R4 BRA HLPPRN HLPOPDB: MOV.W #LWORD HPOPDB,R4 BRA HLPPRN HLPOPU2: MOV.W #LWORD HPOPU2,R4 BRA HLPPRN HLPOPU4: MOV.W #LWORD HPOPU4,R4 BRA HLPPRN HLPOPU5: MOV.W #LWORD HPOPU5,R4 BRA HLPPRN HLPOPD: MOV.W #LWORD HPOPD,R4 BRA HLPPRN HLPIRQ: MOV.W #LWORD HPIRQ,R4 SUB R0L,R0L BSR MSGP MOV.W #LWORD HPFIRQ,R4 BRA HLPPRN HLPIRQ0: MOV.W #LWORD HPIRQ0,R4 BRA HLPPRN HLPIRQ1: MOV.W #LWORD HPIRQ1,R4 BRA HLPPRN HLPIRQ2: MOV.W #LWORD HPIRQ2,R4 BRA HLPPRN HLPIRQ3: MOV.W #LWORD HPIRQ3,R4 BRA HLPPRN HLPIRQ4: MOV.W #LWORD HPIRQ4,R4 BRA HLPPRN HLPIRQ5: MOV.W #LWORD HPIRQ5,R4 BRA HLPPRN HLPIRSTP0: MOV.W #LWORD HPIRSTP0,R4 BRA HLPPRN HLPIRSTP1: MOV.W #LWORD HPIRSTP1,R4 BRA HLPPRN HLPIRSTP2: MOV.W #LWORD HPIRSTP2,R4 BRA HLPPRN HLPIRSTP3: MOV.W #LWORD HPIRSTP3,R4 BRA HLPPRN HLPIRSTP4: MOV.W #LWORD HPIRSTP4,R4 BRA HLPPRN HLPIRSTP5: MOV.W #LWORD HPIRSTP5,R4 BRA HLPPRN HLPIRSTP: MOV.W #LWORD HPIRSTP,R4 BRA HLPPRN HLPLED: MOV.W #LWORD HPLED,R4 BRA HLPPRN HLPLEDINT: MOV.W #LWORD HPLEDINT,R4 BRA HLPPRN HLPLEDSTP: MOV.W #LWORD HPLEDSTP,R4 BRA HLPPRN HLPABS: MOV.W #LWORD HPABS,R4 BRA HLPPRN HLPSIZE: MOV.W #LWORD HPSIZE,R4 BRA HLPPRN HLPFMS: MOV.W #LWORD HPFMS,R4 BRA HLPPRN HLPFSEC: MOV.W #LWORD HPFSEC,R4 BRA HLPPRN HLPFMIN: MOV.W #LWORD HPFMIN,R4 BRA HLPPRN HLPFHOR: MOV.W #LWORD HPFHOR,R4 BRA HLPPRN HLPFDAY: MOV.W #LWORD HPFDAY,R4 BRA HLPPRN HLPTIM: MOV.W #LWORD HPTIMMIN,R4 BRA HLPPRN HLPHEX: MOV.W #LWORD HPHEX,R4 BRA HLPPRN HLPMOD: MOV.W #LWORD HPMOD,R4 BRA HLPPRN HLPADA: MOV.W #LWORD HPADA,R4 BRA HLPPRN HLPADB: MOV.W #LWORD HPADB,R4 BRA HLPPRN HLPADC: MOV.W #LWORD HPADC,R4 BRA HLPPRN HLPADD: MOV.W #LWORD HPADD,R4 BRA HLPPRN HLPADE: MOV.W #LWORD HPADE,R4 BRA HLPPRN HLPADF: MOV.W #LWORD HPADF,R4 BRA HLPPRN HLPADG: MOV.W #LWORD HPADG,R4 BRA HLPPRN HLPADH: MOV.W #LWORD HPADH,R4 BRA HLPPRN HLPFAD: MOV.W #LWORD HPAD,R4 BRA HLPPRN HLPIN1: MOV.W #LWORD HPIN1,R4 BRA HLPPRN HLPIN2: MOV.W #LWORD HPIN2,R4 BRA HLPPRN HLPIN3: MOV.W #LWORD HPIN3,R4 BRA HLPPRN HLPIN4: MOV.W #LWORD HPIN4,R4 BRA HLPPRN HLPIN5: MOV.W #LWORD HPIN5,R4 BRA HLPPRN HLPIN6: MOV.W #LWORD HPIN6,R4 BRA HLPPRN HLPIN8: MOV.W #LWORD HPIN8,R4 BRA HLPPRN HLPINA: MOV.W #LWORD HPINA,R4 BRA HLPPRN HLPINB: MOV.W #LWORD HPINB,R4 BRA HLPPRN HLPIN: MOV.W #LWORD HPIN,R4 BRA HLPPRN HLPFIRQ: MOV.W #LWORD HPFIRQ,R4 BRA HLPPRN HLPPEEK: MOV.W #LWORD HPPEEK,R4 BRA HLPPRN HLPAND: MOV.W #LWORD HPAND,R4 BRA HLPPRN HLPOR: MOV.W #LWORD HPOR,R4 BRA HLPPRN HLPXOR: MOV.W #LWORD HPXOR,R4 BRA HLPPRN HLPNOT: MOV.W #LWORD HPNOT,R4 BRA HLPPRN HLPNEG: MOV.W #LWORD HPNEG,R4 BRA HLPPRN HLPRLL: MOV.W #LWORD HPRLL,R4 BRA HLPPRN HLPRLR: MOV.W #LWORD HPRLR,R4 BRA HLPPRN HLPBCD: MOV.W #LWORD HPBCD,R4 BRA HLPPRN HLPPRN: SUB R0L,R0L BSR MSGP BRA ENDL HLPHLP: MOV.W #LWORD HPHLP,R4 SUB R0L,R0L BSR MSGAL BRA ENDL HLPVER: MOV.W #LWORD HPVER,R4 SUB R0L,R0L BSR MSGAL BRA ENDL HLPALL: MOV.W #LWORD HPLIST,R4 SUB R0L,R0L BSR MSGAL BRA ENDL HLPNARITA: MOV.W #LWORD HPNARITA,R4 SUB R0L,R0L BSR MSGAL BRA ENDL HLPPIN: MOV.W #LWORD PINDATA,R4 SUB R0L,R0L BSR MSGAL BRA ENDL HPLIST: .SDATA " ex: LIST / LIST 100 : Program Listing" HPRUN: .SDATA " ex: RUN : Start Program" HPNEW: .SDATA " ex: NEW : Clear Program" HPDUMP: .SDATA " ex: DUMP : Dump Program by HEX" HPLET: .SDATA " ex: LET A=10 : 10 goes into A" HPGOTO: .SDATA " ex: GOTO 100 : Jump to 100" HPGOSUB: .SDATA " ex: GOSUB 100 : Go Subroutin 100" HPRETURN: .SDATA " ex: RETURN : Return From Subroutin" HPIF: .SDATA " ex: IF A=10 GOTO 100 : IF Sentence" HPFOR: .SDATA " ex: FOR I=1 TO 1000 STEP 10 : FOR .... NEXT Loop" HPNEXT: .SDATA " ex: NEXT I : FOR .... NEXT Loop" HPMS: .SDATA " ex: MS=900 : mm Second" HPSEC: .SDATA " ex: SEC=10 : Second (Max59)" HPMIN: .SDATA " ex: MIN=50 : Minute (Max59)" HPHOR: .SDATA " ex: HOR=13 : Hour (Max23)" HPDAY: .SDATA " ex: DAY=100 : Day (No Limit)" HPREM: .SDATA " ex: REM MEMO : Remarks" HPINPUT: .SDATA " ex: INPUT A,B : Input Data" HPPRINT: .SDATA " ex: PRINT 'ABC',A,B,C : PRINT Data" HPSTOP: .SDATA " ex: STOP : Stop Program Excecusion" HPTMIN: .SDATA " ex: TIMMIN=4 : Adjustment for Time Constant" HPTHOR: .SDATA " ex: TIMHOR=24 : Adjustment for Time Constant" HPTDAY: .SDATA " ex: TIMDAY=1 : Adjustment for Time Constant" HPTIMRUN: .SDATA " ex: TIMRUN : ReStart Watch" HPTIMSTP: .SDATA " ex: TIMSTP : Stop Watch until Restart" HPTIMCLR: .SDATA " ex: TIMCLR : Set Time Zero" HPOP1: .SDATA " ex: OP1=3 : Output Data To PORT1 (Bit0-7)" HPOP2: .SDATA " ex: OP2=3 : Output Data To PORT2 (Bit0-7)" HPOP3: .SDATA " ex: OP3=3 : Output Data To PORT3 (Bit0-7)" HPOP4: .SDATA " ex: OP4=3 : Output Data To PORT4 (Bit0-7)" HPOP5: .SDATA " ex: OP5=3 : Output Data To PORT5 (Bit0-3)" HPOP6: .SDATA " ex: OP6=3 : Output Data To PORT6 (Bit0-6)" HPOP8: .SDATA " ex: OP8=3 : Output Data To PORT8 (Bit0-4)" HPOPA: .SDATA " ex: OPA=3 : Output Data To PORTA (Bit0-7)" HPOPB: .SDATA " ex: OPB=3 : Output Data To PORTB (Bit0-7)" HPOP: .SDATA " ex: OPn=3 : Output Data To PORTn" HPOPD1: .SDATA " ex: OPD1=255 : Port Direction, 255 for All Bit Output (Bit0-7)" HPOPD2: .SDATA " ex: OPD2=0 : Port Direction, 0 for All Bit Input (Bit0-7)" HPOPD3: .SDATA " ex: OPD3=255 : Port Direction, 255 for All Bit Output (Bit0-7)" HPOPD4: .SDATA " ex: OPD4=0 : Port Direction, 0 for All Bit Input (Bit0-7)" HPOPD5: .SDATA " ex: OPD5=255 : Port Direction, 255 for All Bit Output (Bit0-3)" HPOPD6: .SDATA " ex: OPD6=0 : Port Direction, 0 for All Bit Input (Bit0-6)" HPOPD8: .SDATA " ex: OPD8=255 : Port Direction, 255 for All Bit Output (Bit0-4)" HPOPDA: .SDATA " ex: OPDA=255 : Port Direction, 255 for All Bit Output (Bit0-7)" HPOPDB: .SDATA " ex: OPDB=0 : Port Direction, 0 for All Bit Input (Bit0-7)" HPOPU2: .SDATA " ex: OPU2=0 : Port Pull Up for Input Function, (1 for PullUp)" HPOPU4: .SDATA " ex: OPU4=0 : Port Pull Up for Input Function, (1 for PullUp)" HPOPU5: .SDATA " ex: OPU5=0 : Port Pull Up for Input Function, (1 for PullUp)" HPOPD: .SDATA " ex: OPDn=255 : Port Direction, 255 for All Bit Output" HPIRQ: .SDATA " ex: IRQ=0 / GOTO IRQ : Interrupt Routine Line Number" HPIRQ0: .SDATA " ex: IRQ0 100 : Line Number Setting for Interrupt 0" HPIRQ1: .SDATA " ex: IRQ1 100 : Line Number Setting for Interrupt 1" HPIRQ2: .SDATA " ex: IRQ2 100 : Line Number Setting for Interrupt 2" HPIRQ3: .SDATA " ex: IRQ3 100 : Line Number Setting for Interrupt 3" HPIRQ4: .SDATA " ex: IRQ4 100 : Line Number Setting for Interrupt 4" HPIRQ5: .SDATA " ex: IRQ5 100 : Line Number Setting for Interrupt 5" HPIRSTP0: .SDATA " ex: IRSTP0 : Stop Interrupt 0 Setting" HPIRSTP1: .SDATA " ex: IRSTP1 : Stop Interrupt 1 Setting" HPIRSTP2: .SDATA " ex: IRSTP2 : Stop Interrupt 2 Setting" HPIRSTP3: .SDATA " ex: IRSTP3 : Stop Interrupt 3 Setting" HPIRSTP4: .SDATA " ex: IRSTP4 : Stop Interrupt 4 Setting" HPIRSTP5: .SDATA " ex: IRSTP5 : Stop Interrupt 5 Setting" HPIRSTP: .SDATA " ex: IRSTPn : Stop Interrupt n Setting (n:0-5)" HPLED: .SDATA " ex: LED=BCD(123) : Port1 for LED 7Seg. Port2 for Digit" HPLEDINT: .SDATA " HPLEDSTP: .SDATA " ex: LEDSTP : Stop Display of LED" HPABS: .SDATA " ex: A=ABS(nn) : Get Absolute Value" HPSIZE: .SDATA " ex: A=SIZE : Get Remain Free Memory Size" HPFMS: .SDATA " ex: PRINT MS : Milli-Second Time Watch (Max990)" HPFSEC: .SDATA " ex: PRINT SEC : Second Unit Time Watch (Max59)" HPFMIN: .SDATA " ex: PRINT MIN : Minutes Time Watch (Max59)" HPFHOR: .SDATA " ex: PRINT HOR : Hours Time Watch (Max23)" HPFDAY: .SDATA " ex: PRINT DAY : Days Time Watch (No Limit)" HPTIMMIN: .SDATA " ex: PRINT TIMMIN : Time Adjust Constant for Time Counter" HPTIMHOR: .SDATA " ex: PRINT TIMHOR : Time Adjust Constant for Time Counter" HPTIMDAY: .SDATA " ex: PRINT TIMDAY : Time Adjust Constant for Time Counter" HPHEX: .SDATA " ex: A=HEX(FFFF) : 16 Bit Expression" HPMOD: .SDATA " ex: A=B/C+MOD : Extra From Dividing" HPADA: .SDATA " ex: A=ADA : AD Value on PORT7 Bit0 (Max1023,5Volts)" HPADB: .SDATA " ex: A=ADB : AD Value on PORT7 Bit1 (Max1023,5Volts)" HPADC: .SDATA " ex: A=ADC : AD Value on PORT7 Bit2 (Max1023,5Volts)" HPADD: .SDATA " ex: A=ADD : AD Value on PORT7 Bit3 (Max1023,5Volts)" HPADE: .SDATA " ex: A=ADE : AD Value on PORT7 Bit4 (Max1023,5Volts)" HPADF: .SDATA " ex: A=ADF : AD Value on PORT7 Bit5 (Max1023,5Volts)" HPADG: .SDATA " ex: A=ADG : AD Value on PORT7 Bit6 (Max1023,5Volts)" HPADH: .SDATA " ex: A=ADH : AD Value on PORT7 Bit7 (Max1023,5Volts)" HPAD: .SDATA " ex: A=ADx : AD Value on PORT7 Bitn (x:A-H,Max1023,5Volts)" HPIN1: .SDATA " ex: A=IN1 : Input Data From PORT1 (Bit 0-7)" HPIN2: .SDATA " ex: A=IN2 : Input Data From PORT2 (Bit 0-7)" HPIN3: .SDATA " ex: A=IN3 : Input Data From PORT3 (Bit 0-7)" HPIN4: .SDATA " ex: A=IN4 : Input Data From PORT4 (Bit 0-7)" HPIN5: .SDATA " ex: A=IN5 : Input Data From PORT5 (Bit 0-3)" HPIN6: .SDATA " ex: A=IN6 : Input Data From PORT6 (Bit 0-6)" HPIN8: .SDATA " ex: A=IN8 : Input Data From PORT8 (Bit 0-4)" HPINA: .SDATA " ex: A=INA : Input Data From PORTA (Bit 0-7)" HPINB: .SDATA " ex: A=INB : Input Data From PORTB (Bit 0-7)" HPIN: .SDATA " ex: A=INn : Input Data From PORTn" HPFIRQ: .SDATA " ex: IF IRQ#0 GOSUB IRQ : Interrupt Line Number" HPPEEK: .SDATA " ex: A=PEEK(nn) : Get Data ON Memory" HPAND: .SDATA " ex: A=AND(nn,mm) : Make AND Between nn and mm" HPOR: .SDATA " ex: A=OR(nn,mm) : Make OR Between nn and mm" HPXOR: .SDATA " ex: A=XOR(nn,mm) : Make XOR Between nn and mm" HPNOT: .SDATA " ex: A=NOT(nn) : Make NOT Using nn" HPNEG: .SDATA " ex: A=NEG(nn) : Make NEG Value Using nn" HPRLL: .SDATA " ex: A=RLL(1234) : 4 Bit Rotate, Result will be 2341" HPRLR: .SDATA " ex: A=RLR(1234) : 4 Bit Rotate, Result will be 4123" HPBCD: .SDATA " ex: LED=BCD(1234) : Convert to BCD" HPHLP: .SDATA "HELP MESSAGE" .SDATA "" .SDATA "Command: LIST, RUN, NEW, DUMP, VER, ?(xxx PIN)" .SDATA "" .SDATA "Sentence: LET, GOTO, GOSUB, RETURN, IF, FOR, NEXT, REM, INPUT, PRINT, STOP" .SDATA " MS, SEC, MIN, HOR, DAY, TIM(RUN, STP, CLR, MIN, HOR, DAY)" .SDATA " OP(1 2 3 4 5 6 8 A B), OPD(1 2 3 4 5 6 8 A B), OPU(2 4 5)" .SDATA " IRQ, IRQ(0 1 2 3 4 5), IRSTP(0 1 2 3 4 5)" .SDATA " LED, LEDINT(), LEDSTP" .SDATA "" .SDATA "Function: ABS, SIZE, MS, SEC, MIN, HOR, DAY, HEX, MOD" .SDATA " AD(A B C D E F G H), IN(1 2 3 4 5 6 8 A B), IRQ" .SDATA " PEEK, AND, OR, XOR, NOT, NEG, RLL, RLR, BCD" .SDATA " TIM(MIN, HOR, DAY)" .DATA.B H'0 HPVER: .SDATA "Machine Control Language By Narita Takato 1999, March 27" .SDATA " Version Number 1.00 Machine Number 1" .DATA.B H'0 HPNARITA: .SDATA "MESSAGE From Auther" .SDATA "" .SDATA "Good Morning. I am Takato Narita." .SDATA " When I saw this H8 micro tip for the first time, I feel I would like to" .SDATA " run using TINY BASIC on this small tip. Fortunately, I have " .SDATA " experience to do it on 8080, Z80 or 8086 CPU. But conversion work is" .SDATA " not easy. Main reason is coming from the difference of command structure." .SDATA " So some part of this program was different from the original one." .SDATA " Of course, this program was written for the purpose of machine control" .SDATA " by programing. H8 has 6 8bit port and 8 ad conversion port. In this" .SDATA " meaning, this is more powerful one compered with original one." .SDATA " I hope you will like this H8 and enjoy your programing. Thanks for seeing this." PINDATA: .SDATA "H8 PIN DATA" .SDATA " CN1" .SDATA " n: 1 2 3 4 5 6 7 8 9 0" .SDATA " n GND GND P8-0 P8-1 P8-2 P8-3 P8-4 PA-0 PA-1 PA-2" .SDATA " 1n PA-3 PA-4 PA-5 PA-6 PA-7 PB-0 PB-1 PB-2 PB-3 PB-4" .SDATA " 2n PB-5 PB-6 PB-7 RES0 P9-0 P9-1 P9-2 P9-3 P9-4 P9-5" .SDATA " 3n P4-0 P4-1 P4-2 P4-3 5V 5V GND GND POWR POWR" .SDATA "" .SDATA " CN2" .SDATA " n: 1 2 3 4 5 6 7 8 9 0" .SDATA " n GND GND STBY RES NMI P6-3 P6-4 P6-5 P6-6 AVCC" .SDATA " 1n AREF P7-0 P7-1 P7-2 P7-3 P7-4 P7-5 P7-6 P7-7 AVSS" .SDATA "" .SDATA " CN3" .SDATA " n: 1 2 3 4 5 6 7 8 9 0" .SDATA " n GND GND P4-4 P4-5 P4-6 P4-7 P3-0 P3-1 P3-2 P3-3" .SDATA " 1n P3-4 P3-5 P3-6 P3-7 P1-0 P1-1 P1-2 P1-3 P1-4 P1-5" .SDATA " 2n P1-6 P1-7 P2-0 P2-1 P2-2 P2-3 P2-4 P2-5 P2-6 P2-7" .SDATA " 3n P5-0 P5-1 P5-2 P5-3 P6-0 P6-1 P6-2 CK GND GND" .SDATA "" .SDATA " CN4" .SDATA " 1 2 3 4 5 6 7 8 9 0" .SDATA " POWR GND 5V RXD1 RXD0 TXD1 TXD0 VPP MD2 RES" .SDATA "" .SDATA "" .SDATA "SPECIAL USE" .SDATA " PORT1 for LED DATA" .SDATA " PORT2 for LED DYNAMIC DATA" .SDATA " PORT5 for PROGRAM AUTO START" .SDATA " PORT8 for INTERRUPT"<0> .SECTION RAM, DATA, LOCATE=H'FEF10 OTOP: .RES.W 1 OBTM: .RES.W 1 TEXTRAM: .RES.B 3400 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'FFF0E STACK: .EQU $ .SECTION IO, DATA, LOCATE=H'FFF5C ; DA Converter ' DACSCR: .res.b 4 ; H'FFF5C TSTR: .RES.B 4 ; H'FFF60 ; Timer TCR0: .RES.B 1 ; H'FFF64 ; Timer TIOR0: .RES.B 1 ; H'FFF65 TIER0: .RES.B 1 ; H'FFF66 TSR0: .RES.B 3 ; H'FFF67 GRA0: .RES.W 1 ; H'FFF6A ; Timer GRB0: .RES.W 1 TCR1: .RES.B 10 TCR2: .RES.B 1 TIOR2: .RES.B 1 TIER2: .RES.B 1 TSR2: .RES.B 1 TCNT2: .RES.W 1 GRA2: .RES.W 1 GRB2: .RES.W 1 .RES.B 14 TOER: .RES.B 2 ; H'FFF90 .SECTION IOnext, DATA, LOCATE=H'FFFB0 ; SCI ' SCIOSMR: .res.b 1 ; H'FFFB0 SCIOBRR: .res.b 1 ; H'FFFBI ; Bit SCIOSCR: .res.b 1 ; H'FFFB2 SCIOTDR: .res.b 1 ; H'FFFB3 SCIOSSR: .res.b 1 ; H'FFFB4 SCIORDR: .res.b 3 ; H'FFFB5 SCIISMR: .res.b 1 ; H'FFFB8 SCIIBRR: .res.b 1 ; H'FFFB9 ; Bit SCIISCR: .res.b 1 ; H'FFFBA SCIITDR: .res.b 1 ; H'FFFBB SCIISSR: .res.b 1 ; H'FFFBC SCI1RDR: .res.b 3 ; H'FFFBD IO Port PIDDR: .res.b 1 ; H'FFFC0 ; Port P2DDR: .res.b 1 ; H'FFFC1 ; Port P1DR: .res.b 1 ; H'FFFC2 P2DR: .res.b 1 ; H'FFFC3 P3DDR: .res.b 1 ; H'FFFC4 ; Port P4DDR: .res.b 1 ; H'FFFC5 ; Port P3DR: .res.b 1 ; H'FFFC6 P4DR: .res.b 1 ; H'FFFC7 P5DDR: .res.b 1 ; H'FFFC8 ; Port P6DDR: .res.b 1 ; H'FFFC9 ; Port P5DR: .res.b 1 ; H'FFFCA P6DR: .res.b 2 ; H'FFFCB P8DDR: .res.b 1 ; H'FFFCD ; Port P7DR: .res.b 1 ; H'FFFCE ; Port P8DR: .res.b 1 ; H'FFFCF P9DDR: .res.b 1 ; H'FFFD0 ; Port PADDR: .res.b 1 ; Port P9DR: .res.b 1 PADR: .res.b 1 PBDDR: .res.b 2 PBDR: .res.b 2 ; H'FFFD6 P2PCR: .res.b 2 ; H'FFFD8 P4PCR: .res.b 1 ; H'FFFDA P5PCR: .res.b 1 ; H'FFFDB DAC0: .res.b 1 ; H'FFFDC ; DA DAC1: .res.b 1 ; H'FFFDD ; DA DACCR: .res.b 2 ; H'FFFDE ; AD Converter ADCA: .res.b 2 ; AD ; H'FFFEO ; H'FFFE2 ADCB: .res.b 2 ; AD ; H'FFFE4 ADCC: .res.b 2 ; AD ; H'FFFE6 ADCD: .res.b 2 ; AD ADCCSR: .res.b 1 ; H'FFFE8 ADCCR: .res.b 1 ; H'FFFE9 .RES.B 10 ISCR: .RES.B 1 ; H'FFF4 IER: .RES.B 1 ; H'FFF5 ISR: .RES.B 1 ; H'FFF6 ; .SECTION ROM, DATA, LOCATE=H'10000 ; .DATA.W H'5555 ; .DATA.W LWORD WATCH ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; .DATA.W LWORD START ; ;WATCH: .DATA.B H'EF, H'14, H'EF, H'78, H'00, H'0A, H'47, H'4F ; .DATA.B H'54, H'4F, H'20, H'31, H'30, H'30, H'30, H'0D ; .DATA.B H'00, H'14, H'41, H'3D, H'53, H'45, H'43, H'3B ; .DATA.B H'42, H'3D, H'4D, H'49, H'4E, H'3B, H'43, H'3D ; .DATA.B H'48, H'4F, H'52, H'0D, H'00, H'1E, H'49, H'46 ; .DATA.B H'20, H'41, H'3D, H'53, H'45, H'43, H'20, H'47 ; .DATA.B H'4F, H'54, H'4F, H'20, H'33, H'30, H'0D, H'00 ; .DATA.B H'28, H'50, H'52, H'49, H'4E, H'54, H'20, H'53 ; .DATA.B H'45, H'43, H'2C, H'4D, H'49, H'4E, H'2C, H'48 ; .DATA.B H'4F, H'52, H'0D, H'00, H'32, H'47, H'4F, H'54 ; .DATA.B H'4F, H'20, H'32, H'30, H'0D, H'03, H'E8, H'54 ; .DATA.B H'49, H'4D, H'52, H'55, H'4E, H'0D, H'03, H'F2 ; .DATA.B H'47, H'4F, H'54, H'4F, H'20, H'32, H'30, H'0D .END