📄 basic11.sdi
字号:
E2A9,15,, FCB IFTOK
E2AA,E9 07,, FDB XIF
E2AC,49 4E 50 55 54,INPUT:, INPUT: FCC "INPUT"
E2B1,00,, FCB 0
E2B2,16,, FCB INPUTTOK
E2B3,EA 40,, FDB XINPUT
E2B5,50 52 49 4E 54,PRINT:, PRINT: FCC "PRINT"
E2BA,00,, FCB 0
E2BB,03,, FCB PRINTTOK
E2BC,E9 D8,, FDB XPRINT
E2BE,3F,, FCC "?"
E2BF,00,, FCB 0
E2C0,03,, FCB PRINTTOK
E2C1,E9 D8,, FDB XPRINT
E2C3,46 4F 52,FOR:, FOR: FCC "FOR"
E2C6,00,, FCB 0
E2C7,04,, FCB FORTOK
E2C8,E9 70,, FDB XFOR
E2CA,4E 45 58 54,NEXT:, NEXT: FCC "NEXT"
E2CE,00,, FCB 0
E2CF,05,, FCB NEXTTOK
E2D0,E9 CB,, FDB XNEXT
E2D2,53 54 4F 50,STOPSS:, STOPSS: FCC "STOP"
E2D6,00,, FCB 0
E2D7,17,, FCB STOPTOK
E2D8,E3 FB,, FDB XSTOP
E2DA,45 4E 44 57 48,ENDWH:, ENDWH: FCC "ENDWH"
E2DF,00,, FCB 0
E2E0,1A,, FCB ENDWHTOK
E2E1,E3 FB,, FDB XENDWH
E2E3,45 4E 44,ENDS:, ENDS: FCC "END"
E2E6,00,, FCB 0
E2E7,18,, FCB ENDTOK
E2E8,E3 FB,, FDB XEND
E2EA,52 45 4D,REM:, REM: FCC "REM"
E2ED,00,, FCB 0
E2EE,0A,, FCB REMTOK
E2EF,E3 FC,, FDB XREM
E2F1,54 52 4F 4E,TRON:, TRON: FCC "TRON"
E2F5,00,, FCB 0
E2F6,06,, FCB TRONTOK
E2F7,E3 FB,, FDB XTRON
E2F9,54 52 4F 46 46,TROFF:, TROFF: FCC "TROFF"
E2FE,00,, FCB 0
E2FF,07,, FCB TROFFTOK
E300,E3 FB,, FDB XTROFF
E302,57 48 49 4C 45,WHILE:, WHILE: FCC "WHILE"
E307,00,, FCB 0
E308,19,, FCB WHILETOK
E309,EA 8B,, FDB XWHILE
E30B,50 4F 4B 45,POKE:, POKE: FCC "POKE"
E30F,00,, FCB 0
E310,08,, FCB POKETOK
E311,E7 FA,, FDB XPOKE
E313,44 49 4D,DIM:, DIM: FCC "DIM"
E316,00,, FCB 0
E317,09,, FCB DIMTOK
E318,EA 58,, FDB XDIM
E31A,45 45 50,EEP:, EEP: FCC "EEP"
E31D,00,, FCB 0
E31E,1B,, FCB EEPTOK
E31F,E8 13,, FDB XEEP
E321,50 4F 52 54 41,PORTA:, PORTA: FCC "PORTA"
E326,00,, FCB 0
E327,1C,, FCB PORTATOK
E328,E4 18,, FDB XPORTA
E32A,50 4F 52 54 42,PORTB:, PORTB: FCC "PORTB"
E32F,00,, FCB 0
E330,1D,, FCB PORTBTOK
E331,E4 18,, FDB XPORTB
E333,50 4F 52 54 43,PORTC:, PORTC: FCC "PORTC"
E338,00,, FCB 0
E339,1E,, FCB PORTCTOK
E33A,E4 18,, FDB XPORTC
E33C,50 4F 52 54 44,PORTD:, PORTD: FCC "PORTD"
E341,00,, FCB 0
E342,1F,, FCB PORTDTOK
E343,E4 18,, FDB XPORTD
E345,49 4E 42 59 54 45,INBYTES:, INBYTES: FCC "INBYTE"
E34B,00,, FCB 0
E34C,23,, FCB INBYTTOK
E34D,EA 83,, FDB XINBYTE
E34F,54 49 4D 45,TIME:, TIME: FCC "TIME"
E353,00,, FCB 0
E354,24,, FCB TIMETOK
E355,EA 93,, FDB XTIME
E357,52 45 54 49,RETI:, RETI: FCC "RETI"
E35B,00,, FCB 0
E35C,27,, FCB RETITOK
E35D,E3 FB,, FDB XRETI
E35F,50 41 43 43,PACC:, PACC: FCC "PACC"
E363,00,, FCB 0
E364,0B,, FCB PACCTOK
E365,EA 93,, FDB XPACC
E367,53 4C 45 45 50,SLEEP:, SLEEP: FCC "SLEEP"
E36C,00,, FCB 0
E36D,29,, FCB SLEEPTOK
E36E,E3 FB,, FDB XSLEEP
E370,52 54 49 4D 45,RTIMES:, RTIMES: FCC "RTIME"
E375,00,, FCB 0
E376,2A,, FCB RTIMETOK
E377,E3 FB,, FDB XRTIME
E379,00,, FCB 0 ; END OF TABLE MARKER.
,,,
,,, *blanks()
,,, *{
,,, * short spcnt;
,,, * spcnt=0;
,,, * while(*ibufptr==SPC) { ibufptr++; spcnt++; }
,,, *
,,, BLANKS: EQU *
E37A,3C,, PSHX
E37B,DE 00,, LDX IBUFPTR
E37D,5F,, CLRB
E37E,A6 00,BLANKS1:, BLANKS1: LDAA 0,X
E380,81 20,, CMPA #SPC
E382,26 04,, BNE BLANKS2
E384,5C,, INCB
E385,08,, INX
E386,20 F6,, BRA BLANKS1
,,, *
,,, * if(spcnt==0) return;
,,, *
E388,5D,BLANKS2:, BLANKS2: TSTB
E389,26 02,, BNE BLANKS3
E38B,38,, PULX
E38C,39,, RTS
,,, *
,,, * if(spcnt>1)
,,, * {
,,, * *tbufptr++=MSCNTOK;
,,, * *tbufptr++=spcnt;
,,, * }
,,, *
E38D,DF 00,BLANKS3:, BLANKS3: STX IBUFPTR
E38F,DE 02,, LDX TBUFPTR
E391,C1 01,, CMPB #1
E393,27 0C,, BEQ BLANKS4
E395,86 7F,, LDAA #MSCNTOK
E397,A7 00,, STAA 0,X
E399,08,, INX
E39A,E7 00,BLANKS5:, BLANKS5: STAB 0,X
E39C,08,, INX
E39D,DF 02,, STX TBUFPTR
E39F,38,, PULX
E3A0,39,, RTS
,,, *
,,, * else
,,, * {
,,, * *tbufptr++=SSCNTOK;
,,, * }
,,, * return;
,,, *}
,,, *
E3A1,C6 7E,BLANKS4:, BLANKS4: LDAB #SSCNTOK
E3A3,20 F5,, BRA BLANKS5
,,, *
,,, *
,,, *<><><><><><><> NOTE: THIS FUNCTION NOT NEEDED <><><><><><><>
,,, *
,,, */**************************************
,,, * match()
,,, * try to find match between *lit and
,,, * *ibufptr. if match found, ibufptr is
,,, * advanced to point beyond *lit. the
,,, * string pointed to by lit must be null
,,, * terminated.
,,, ***************************************/
,,, *
,,, *match(lit)
,,, *char *lit;
,,, *{
,,, * int k;
,,, * if(k=streq(ibufptr,lit))
,,, * {
,,, * ibufptr+=k;
,,, * return(1);
,,, * }
,,, * return(0);
,,, *}
,,,
,,, */****************************************
,,, * streq()
,,, * compare srt1 to str2. str2 must be null
,,, * terminated.
,,, *****************************************/
,,, *
,,, *streq(str1,str2)
,,, *char *str1,*str2;
,,, *{
,,, * int k;
,,, * k=0;
,,, * while(str2[k]) /* we're not at the end of string2 */
,,, * {
,,, * if((str1[k])!=(str2[k])) return(0);
,,, * k++;
,,, * }
,,, * return(k);
,,, *}
,,, *
,,, STREQ: EQU *
E3A5,DC 00,, LDD IBUFPTR ; SAVE VALUE OF POINTER.
,,, * PSHD
E3A7,37,, PSHB
E3A8,36,, PSHA
E3A9,A6 00,STREQU4:, STREQU4: LDAA 0,X
E3AB,27 12,, BEQ STREQU2
E3AD,8D 1B,STREQU1:, STREQU1: BSR GETNXCHR
E3AF,BD E0 FA,, jsr ToUpper ; Make the character upper case.
E3B2,A1 00,, CMPA 0,X
E3B4,27 06,, BEQ STREQU3
,,, * PULD
E3B6,32,, PULA
E3B7,33,, PULB
E3B8,DD 00,, STD IBUFPTR
E3BA,0C,, CLC
E3BB,39,, RTS
E3BC,08,STREQU3:, STREQU3: INX
E3BD,20 EA,, BRA STREQU4
E3BF,32,STREQU2:, STREQU2: PULA
E3C0,33,, PULB
E3C1,0D,, SEC
E3C2,39,, RTS
,,, *
,,, *
,,, * THIS ROUTINE GETS THE NEXT CHARACTER FROM THE INPUT BUFFER.
,,, *
,,, *
E3C3,3C,GETCHR:, GETCHR: PSHX ; SAVE THE X REGISTER.
E3C4,DE 00,, LDX IBUFPTR ; GET POINTER.
E3C6,A6 00,, LDAA 0,X ; GET A CHARACTER.
E3C8,38,, PULX ; RESTORE X.
E3C9,39,, RTS ; RETURN.
,,, *
,,, *
,,, * THIS ROUTINE GETS THE NEXT CHARACTER FROM THE INPUT BUFFER
,,, * AND ADVANCES THE POINTER TO POINT TO THE NEXT CHARACTER.
,,, *
,,, *
E3CA,8D F7,GETNXCHR:, GETNXCHR: BSR GETCHR
,,, * FALL THROUGH TO INCIBP.
,,, *
,,, *
,,, * THIS ROUTINE JUST INCREMENTS THE INPUT BUFFER POINTER.
,,, *
,,, *
E3CC,3C,INCIBP:, INCIBP: PSHX ; SAVE X.
E3CD,DE 00,, LDX IBUFPTR ; GET POINTER.
E3CF,08,INCIBP1:, INCIBP1: INX ; ADVANCE POINTER.
E3D0,DF 00,, STX IBUFPTR ; UPDATE POINTER.
E3D2,38,INCIBP2:, INCIBP2: PULX ; RESTORE X
E3D3,39,, RTS ; RETURN.
,,, *
,,, *
,,, * THIS ROUTINE PUTS THE WORD IN THE D-REG. INTO THE TOKEN BUFFER
,,, * AND ADVANCES THE TOKEN BUFFER POINTER.
,,, *
,,, *
E3D4,8D 01,PUTDTOK:, PUTDTOK: BSR PUTTOK ; PUT THE FIRST BYTE INTO THE TOKEN BUFFER.
E3D6,17,, TBA ; PUT THE 2ND BYTE INTO A.
,,, * ; FALL THROUGH TO PUTTOK.
,,, *
,,, *
,,, * THIS ROUTINE PUTS THE CHARACTER IN THE A-REG. INTO THE TOKEN
,,, * BUFFER AND ADVANCES THE TOKEN BUFFER POINTER.
,,, *
,,, *
E3D7,3C,PUTTOK:, PUTTOK: PSHX ; SAVE X.
E3D8,37,, pshb
E3D9,36,, psha ; (9/12/89).
E3DA,DE 02,, LDX TBUFPTR ; GET POINTER.
E3DC,A7 00,, STAA 0,X ; PUT CHARACTER.
E3DE,08,PUTTOK1:, PUTTOK1: INX ; ADVANCE POINTER.
E3DF,DF 02,, STX TBUFPTR ; SAVE POINTER.
,,,
E3E1,DC 4B,, LDD TKNBUFS ; get the starting address of the token buffer.
E3E3,C3 00 80,, ADDD #TBUFLEN ; add the length of the buffer to it.
E3E6,1A 93 02,, CPD TBUFPTR ; IS THE TOKEN BUFFER FULL?
E3E9,32,, pula ; (9/12/89).
E3EA,33,, pulb ; restore the b reg.
E3EB,22 E5,, BHI INCIBP2 ; NO. RESTORE X AND RETURN.
E3ED,86 14,, LDAA #EXPCXERR ; YES. FLAG THE ERROR.
E3EF,7E EA 98,, JMP RPTERR ; GO REPORT IT.
,,, #Include 'BASICLB2.Asm'
,,, * title BASICLB2
,,, * page
,,, *
,,, *
,,, *<><><><><><> NOTE: FUNCTION PERFORMED IN "XLATE" <><><><><><>
,,, *
,,, */***** xmideol() *****/
,,, *
,,, *xmideol()
,,, *{
,,, * *tbufptr++=MEOLTOK;
,,, * ++ibufptr;
,,, * return;
,,, *}
,,, *
,,, *
,,, *
,,, */****** common code for GOSUB and GOTO *****/
,,, *
,,, *xgo(gotok)
,,, *char gotok;
,,, *{
,,, * int num;
,,, * *tbufptr++=gotok; /* put GOTO or GOSUB token in buffer */
,,, * blanks(); /* skip blanks before line number */
,,, * *tbufptr++=LCONTOK; /* put line number constant token in buffer */
,,, * num=getlinum(); /* get line number */
,,, * if(num==0) errcode=LINENERR; /* if 0, line number error */
,,, * if(errcode) return; /* if error, return */
,,, * putint(num); /* put line number in buffer */
,,, * return;
,,, *}
,,, *
,,, XGOSUB: EQU *
,,, XGOTO: EQU *
,,, * JSR BLANKS
E3F2,86 A8,, LDAA #LCONTOK
E3F4,8D E1,, BSR PUTTOK
E3F6,BD E1 6C,, JSR GETLINUM
E3F9,20 D9,XGOTO2:, XGOTO2: BRA PUTDTOK
,,, *
,,, *
,,, *<><><><><><> ROUTINE NOT NEEDED <><><><><><>
,,, *
,,, */***** GOSUB *****/
,,, *
,,, *xgosub()
,,, *{
,,, * xgo(GOSUBTOK);
,,, * return;
,,, *}
,,, *
,,, *
,,, *<><><><><><> ROUTINE NOT NEEDED <><><><><><>
,,, *
,,, */***** GOTO *****/
,,, *
,,, *xgoto()
,,, *{
,,, * xgo(GOTOTOK);
,,, * return;
,,, *}
,,,
,,, */***** RETURN *****/
,,, *
,,, *xreturn()
,,, *{
,,, * *tbufptr++=RETNTOK; /* put RETURN token in buffer */
,,, * return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -