📄 basic-52.sdi
字号:
,,,STACKTP EQU 0FEH ;ARG AND CONTROL STACK TOPS
,,, ;
,,, ; The character equates
,,, ;
,,,CR EQU 0DH ;CARRIAGE RETURN
,,,LF EQU 0AH ;LINE FEED
,,,BELL EQU 07H ;BELL CHARACTER
,,,BS EQU 08H ;BACK SPACE
,,,CNTRLC EQU 03H ;CONTROL C
,,,CNTRLD EQU 04H ;CONTROL D
,,,NULL EQU 00H ;NULL
,,, ;
,,,$EJECT
,,, ;
,,, ; The internal system equates
,,, ;
,,,LINLEN EQU 73 ;THE LENGTH OF AN INPUT LINE
,,,EOF EQU 01 ;END OF FILE CHARACTER
,,,ASTKAH EQU 01 ;ASTKA IS IN PAGE 1 OF RAM
,,,CSTKAH EQU 00 ;CSTKA IS IN PAGE 0 OF RAM
,,,FTYPE EQU 01 ;CONTROL STACK "FOR"
,,,GTYPE EQU 02 ;CONTROL STACK "GOSUB"
,,,DTYPE EQU 03 ;DO-WHILE/UNTIL TYPE
,,,ROMADR EQU 8000H ;LOCATION OF ROM
,,, ;
,,, ; The floating point equates
,,, ;
,,,FPSIZ EQU 6 ;NO. OF BYTES IN A FLOATING NUM
,,,DIGIT EQU FPSIZ-2 ;THE MANTISSA OF A FLOATING NUM
,,,STESIZ EQU FPSIZ+3 ;SIZE OF SYMBOL ADJUSTED TABLE ELEMENT
,,,FP_BASE EQU 1993H ;BASE OF FLOATING POINT ROUTINES
,,,PSTART EQU 512 ;START OF A PROGRAM IN RAM
,,,FSIZE EQU FPSIZ+FPSIZ+2+2+1
,,, ;
,,,$EJECT
,,, ;**************************************************************
,,, ;
0047,,USENT,USENT: ; User entry jump table
,,, ;
,,, ;**************************************************************
,,, ;
0047,17 85,, DW CMND1 ;(00, 00H)COMMAND MODE JUMP
0049,12 15,, DW IFIX ;(01, 01H)CONVERT FP TO INT
004B,0F E6,, DW PUSHAS ;(02, 02H)PUSH VALUE ONTO ARG STACK
004D,0F DC,, DW POPAS ;(03, 03H)POP VALUE OFF ARG STACK
004F,04 95,, DW PG1 ;(04, 04H)PROGRAM A PROM
0051,06 D0,, DW INLINE ;(05, 05H)INPUT A LINE
0053,06 B7,, DW UPRNT ;(06, 06H)PRINT A LINR
0055,06 9D,, DW CRLF ;(07, 07H)OUTPUT A CRLF
,,, ;
,,, ;**************************************************************
,,, ;
,,, ; This is the operation jump table for arithmetics
,,, ;
,,, ;**************************************************************
,,, ;
0057,13 9E,OPTAB,OPTAB: DW ALPAR ;(08, 08H)LEFT PAREN
0059,13 1D,, DW AEXP ;(09, 09H)EXPONENTAION
005B,11 A2,, DW AMUL ;(10, 0AH)FP MUL
005D,17 3F,, DW AADD ;(11, 0BH)FLOATING POINT ADD
005F,13 FC,, DW ADIV ;(12, 0CH)FLOATING POINT DIVIDE
0061,17 1A,, DW ASUB ;(13, 0DH)FLOATING POINT SUBTRACTION
0063,14 8A,, DW AXRL ;(14, 0EH)XOR
0065,14 76,, DW AANL ;(15, 0FH)AND
0067,14 7F,, DW AORL ;(16, 10H)OR
0069,13 93,, DW ANEG ;(17, 11H)NEGATE
006B,13 CD,, DW AEQ ;(18, 12H)EQUAL
006D,13 D9,, DW AGE ;(19, 13H)GREATER THAN OR EQUAL
006F,13 DD,, DW ALE ;(20, 14H)LESS THAN OR EQUAL
0071,13 D3,, DW ANE ;(21, 15H)NOT EQUAL
0073,13 C8,, DW ALT ;(22, 16H)LESS THAN
0075,13 B7,, DW AGT ;(23, 17H)GREATER THAN
,,, ;
,,,$EJECT
,,, ;***************************************************************
,,, ;
,,, ; This is the jump table for unary operators
,,, ;
,,, ;***************************************************************
,,, ;
0077,13 81,, DW AABS ;(24, 18H)ABSOLUTE VALUE
0079,13 5F,, DW AINT ;(25, 19H)INTEGER OPERATOR
007B,13 87,, DW ASGN ;(26, 1AH)SIGN OPERATOR
007D,14 88,, DW ANOT ;(27, 1BH)ONE'S COMPLEMENT
007F,11 5F,, DW ACOS ;(28, 1CH)COSINE
0081,11 C2,, DW ATAN ;(29, 1DH)TANGENT
0083,11 63,, DW ASIN ;(30, 1EH)SINE
0085,12 7F,, DW ASQR ;(31, 1FH)SQUARE ROOT
0087,13 9F,, DW ACBYTE ;(32, 20H)READ CODE
0089,13 19,, DW AETOX ;(33, 21H)E TO THE X
008B,11 D2,, DW AATAN ;(34, 22H)ARC TANGENT
008D,12 B2,, DW ALN ;(35, 23H)NATURAL LOG
008F,13 A8,, DW ADBYTE ;(36, 24H)READ DATA MEMORY
0091,13 B0,, DW AXBYTE ;(37, 25H)READ EXTERNAL MEMORY
0093,14 71,, DW PIPI ;(38, 26H)PI
0095,13 E3,, DW ARND ;(39, 27H)RANDOM NUMBER
0097,14 9B,, DW AGET ;(40, 28H)GET INPUT CHARACTER
0099,17 0F,, DW AFREE ;(41, 29H)COMPUTE #BYTES FREE
009B,17 1F,, DW ALEN ;(42, 2AH) COMPUTE LEN OF PORGRAM
009D,0F E2,, DW AXTAL ;(43, 2BH) CRYSTAL
009F,16 41,, DW PMTOP ;(44, 2CH)TOP OF MEMORY
00A1,17 27,, DW ATIME ;(45, 2DH) TIME
00A3,14 AB,, DW A_IE ;(46, 2EH) IE
00A5,14 AF,, DW A_IP ;(47, 2FH) IP
00A7,14 B3,, DW ATIM0 ;(48, 30H) TIMER 0
00A9,14 B9,, DW ATIM1 ;(49, 31H) TIMER 1
00AB,14 BF,, DW ATIM2 ;(50, 32H) TIMER 2
00AD,14 C5,, DW AT2CON ;(51, 33H) T2CON
00AF,14 C9,, DW ATCON ;(52, 34H) TCON
00B1,14 CD,, DW ATMOD ;(53, 35H) ATMOD
00B3,14 D1,, DW ARCAP2 ;(54, 36H) RCAP2
00B5,14 D7,, DW AP1 ;(55, 37H) P1
00B7,14 DB,, DW APCON ;(56, 38H) PCON
00B9,0F 4C,, DW EXPRB ;(57, 39H) EVALUATE AN EXPRESSION
00BB,16 4E,, DW AXTAL1 ;(58, 3AH) CALCULATE CRYSTAL
00BD,14 E2,, DW LINE ;(59, 3BH) EDIT A LINE
00BF,15 AC,, DW PP ;(60, 3CH) PROCESS A LINE
00C1,10 8C,, DW UPPL-3 ;(61, 3DH) UNPROCESS A LINE
00C3,0D 6E,, DW VAR ;(62, 3EH) FIND A VARIABLE
00C5,0E D6,, DW GC ;(63, 3FH) GET A CHARACTER
00C7,0E DE,, DW GCI ;(64, 40H) GET CHARACTER AND INCREMENT
00C9,07 89,, DW INCHAR ;(65, 41H) INPUT A CHARACTER
00CB,08 06,, DW CRUN ;(66, 42H) RUN A PROGRAM
,,,$EJECT
00CD,01,OPBOL,OPBOL: DB 1 ;
,,, ;
00CE,0F,, DB 15 ;LEFT PAREN
00CF,0E,, DB 14 ;EXPONENTIAN **
00D0,0A,, DB 10 ;MUL
00D1,08,, DB 8 ;ADD
00D2,0A,, DB 10 ;DIVIDE
00D3,08,, DB 8 ;SUB
00D4,03,, DB 3 ;XOR
00D5,05,, DB 5 ;AND
00D6,04,, DB 4 ;OR
00D7,0C,, DB 12 ;NEGATE
00D8,06,, DB 6 ;EQ
00D9,06,, DB 6 ;GT
00DA,06,, DB 6 ;LT
00DB,06,, DB 6 ;NE
00DC,06,, DB 6 ;LE
00DD,06,, DB 6 ;GE
,,, ;
00DE,0F,UOPBOL,UOPBOL: DB 15 ;AABS
00DF,0F,, DB 15 ;AAINT
00E0,0F,, DB 15 ;ASGN
00E1,0F,, DB 15 ;ANOT
00E2,0F,, DB 15 ;ACOS
00E3,0F,, DB 15 ;ATAN
00E4,0F,, DB 15 ;ASIN
00E5,0F,, DB 15 ;ASQR
00E6,0F,, DB 15 ;ACBYTE
00E7,0F,, DB 15 ;E TO THE X
00E8,0F,, DB 15 ;AATAN
00E9,0F,, DB 15 ;NATURAL LOG
00EA,0F,, DB 15 ;DBYTE
00EB,0F,, DB 15 ;XBYTE
,,, ;
,,,$EJECT
,,, ;***************************************************************
,,, ;
,,, ; The ASCII printed messages.
,,, ;
,,, ;***************************************************************
,,, ;
00EC,53 54 4F 50,STP,STP: DB 'STOP"'
,,, ;
00F1,54 52 59 20,IAN,IAN: DB 'TRY AGAIN"'
,,, ;
00FB,52 45 41 44,RDYS,RDYS: DB 'READY"'
,,, ;
0101,20 2D 20 49,INS,INS: DB ' - IN LINE "'
,,, ;
,,, ;**************************************************************
,,, ;
,,, ; This is the command jump table
,,, ;
,,, ;**************************************************************
,,, ;
010D,08 06,CMNDD,CMNDD: DW CRUN ;RUN
010F,10 3A,, DW CLIST ;LIST
0111,0B 10,, DW CNULL ;NULL
0113,06 54,, DW CNEW ;NEW
0115,18 3F,, DW CCONT ;CONTINUE
0117,04 61,, DW CPROG ;PROGRAM A PROM
0119,17 71,, DW CXFER ;TRANSFER FROM ROM TO RAM
011B,17 7D,, DW CRAM ;RAM MODE
011D,05 36,, DW CROM ;ROM MODE
011F,04 5A,, DW CIPROG ;INTELLIGENT PROM PROGRAMMING
,,, ;
,,,$EJECT
,,, ;***************************************************************
,,, ;
,,, ; This is the statement jump table.
,,, ;
,,, ;**************************************************************
,,, ;
0121,,STATD,STATD: ;
0121,09 76,, DW SLET ;LET 80H
0123,06 87,, DW SCLR ;CLEAR 81H
0125,0A 7E,, DW SPUSH ;PUSH VAR 82H
0127,0A B2,, DW SGOTO ;GO TO 83H
0129,16 84,, DW STONE ;TONE 84H
012B,0C 31,, DW SPH0 ;PRINT MODE 0 85H
012D,19 2C,, DW SUI ;USER INPUT 86H
012F,19 31,, DW SUO ;USER OUTPUT 87H
0131,0A 85,, DW SPOP ;POP VAR 88H
0133,0C 35,, DW SPRINT ;PRINT 89H
0135,0E 6C,, DW SCALL ;CALL 8AH
0137,0D 6A,, DW SDIMX ;DIMENSION 8BH
0139,06 04,, DW STRING ;STRING ALLO 8CH
013B,16 F7,, DW SBAUD ;SET BAUD 8DH
013D,19 19,, DW SCLOCK ;CLOCK 8EH
013F,0C 33,, DW SPH1 ;PRINT MODE 1 8FH
,,, ;
,,, ; No direct mode from here on
,,, ;
0141,08 5C,, DW SSTOP ;STOP 90H
0143,0E 5F,, DW SOT ;ON TIME 91H
0145,14 0B,, DW SONEXT ;ON EXT INT 92H
0147,0B 16,, DW SRETI ;RET FROM INT 93H
0149,0F 0E,, DW S_DO ;DO 94H
014B,0B D6,, DW SRESTR ;RESTOR 95H
014D,0F 05,, DW WCR ;REM 96H
014F,0B 67,, DW SNEXT ;NEXT 97H
0151,14 01,, DW SONERR ;ON ERROR 98H
0153,0C F4,, DW S_ON ;ON 99H
0155,0D FE,, DW SINPUT ;INPUT 9AH
0157,0B EB,, DW SREAD ;READ 9BH
0159,0E F5,, DW FINDCR ;DATA 9CH
015B,0B 18,, DW SRETRN ;RETURN 9DH
015D,0A 8E,, DW SIF ;IF 9EH
015F,0B 35,, DW SGOSUB ;GOSUB 9FH
0161,0A 44,, DW SFOR ;FOR A0H
0163,0B 04,, DW SWHILE ;WHILE A1H
0165,0B 09,, DW SUNTIL ;UNTIL A2H
0167,17 85,, DW CMND1 ;END A3H
0169,18 5C,, DW I_DL ;IDLE A4H
016B,0F EE,, DW ST_A ;STORE AT A5H
016D,0F F2,, DW LD_A ;LOAD AT A6H
016F,05 0C,, DW PGU ;PGM A7H
0171,07 BC,, DW RROM ;RUN A ROM A9H
,,, ;
,,,$EJECT
,,, ;**************************************************************
,,, ;
0173,,TOKTAB,TOKTAB: ; This is the basic token table
,,, ;
,,, ;**************************************************************
,,, ;
,,, ; First the tokens for statements
,,, ;
0173,80,, DB 80H ;LET TOKEN
0174,4C 45 54,, DB 'LET'
,,, ;
0177,81,, DB 81H ;CLEAR TOKEN
0178,43 4C 45 41,, DB 'CLEAR'
,,, ;
017D,82,, DB 82H ;PUSH TOKEN
017E,50 55 53 48,, DB 'PUSH'
,,, ;
,,,T_GOTO EQU 83H
,,, ;
0182,83,, DB 83H ;GO TO TOKEN
0183,47 4F 54 4F,, DB 'GOTO'
,,, ;
0187,84,, DB 84H ;TOGGLE TOKEN
0188,50 57 4D,, DB 'PWM'
,,, ;
018B,85,, DB 85H ;PRINT HEX MODE 0
018C,50 48 30 2E,, DB 'PH0.'
,,, ;
0190,86,, DB 86H ;USER IN TOKEN
0191,55 49,, DB 'UI'
,,, ;
0193,87,, DB 87H ;USER OUT TOKEN
0194,55 4F,, DB 'UO'
,,, ;
0196,88,, DB 88H ;POP TOKEN
0197,50 4F 50,, DB 'POP'
,,, ;
,,,$EJECT
019A,89,, DB 89H ;PRINT TOKEN
019B,50 52 49 4E,, DB 'PRINT'
01A0,89,, DB 89H
01A1,50 2E,, DB 'P.' ;P. ALSO MEANS PRINT
01A3,89,, DB 89H ;? ALSO
01A4,3F,, DB '?'
,,, ;
01A5,8A,, DB 8AH ;CALL TOKEN
01A6,43 41 4C 4C,, DB 'CALL'
,,, ;
01AA,8B,, DB 8BH ;DIMENSION TOKEN
01AB,44 49 4D,, DB 'DIM'
,,, ;
01AE,8C,, DB 8CH ;STRING TOKEN
01AF,53 54 52 49,, DB 'STRING'
,,, ;
01B5,8D,, DB 8DH ;SET BAUD RATE
01B6,42 41 55 44,, DB 'BAUD'
,,, ;
01BA,8E,, DB 8EH ;CLOCK
01BB,43 4C 4F 43,, DB 'CLOCK'
,,, ;
01C0,8F,, DB 8FH ;PRINT HEX MODE 1
01C1,50 48 31 2E,, DB 'PH1.'
,,, ;
,,,T_STOP EQU 90H ;STOP TOKEN
01C5,90,, DB T_STOP
01C6,53 54 4F 50,, DB 'STOP'
,,, ;
,,,T_DIR EQU T_STOP ;NO DIRECT FROM HERE ON
,,, ;
01CA,91,, DB T_STOP+1 ;ON TIMER INTERRUPT
01CB,4F 4E 54 49,, DB 'ONTIME'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -