📄 basic-52.lst
字号:
293: ;
294: ; Now floating point and the other temps
295: ;
296: ; FP Uses to locations 03CH
297: ;
298: ; Now the stack designators.
299: ;
300: N 003E SPSAV EQU 3EH
301: N 003F S_LEN EQU 3FH
302: N 0040 T_HH EQU 40H
303: N 0041 T_LL EQU 41H
304: N 0042 INTXAH EQU 42H
305: N 0043 INTXAL EQU 43H
306: N 0045 MT1 EQU 45H
307: N 0046 MT2 EQU 46H
308: N 0047 MILLIV EQU 47H ;TIMER LOCATIONS
309: N 0048 TVH EQU 48H
310: N 0049 TVL EQU 49H
311: N 004A SAVE_T EQU 4AH
312: N 004B SP_H EQU 4BH ;SERIAL PORT TIME OUT
313: N 004C SP_L EQU 4CH
314: N 004D CMNDSP EQU 4DH ;SYSTEM STACK POINTER
315: N 00FF IRAMTOP EQU 0FFH ;TOP OF RAM
316: N 00FE STACKTP EQU 0FEH ;ARG AND CONTROL STACK TOPS
317: ;
318: ; The character equates
319: ;
320: N 000D CR EQU 0DH ;CARRIAGE RETURN
321: N 000A LF EQU 0AH ;LINE FEED
322: N 0007 BELL EQU 07H ;BELL CHARACTER
323: N 0008 BS EQU 08H ;BACK SPACE
324: N 0003 CNTRLC EQU 03H ;CONTROL C
325: N 0004 CNTRLD EQU 04H ;CONTROL D
326: N 0000 NULL EQU 00H ;NULL
327: ;
328: $EJECT
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 10
Line I Addr Code Source
329: ;
330: ; The internal system equates
331: ;
332: N 0049 LINLEN EQU 73 ;THE LENGTH OF AN INPUT LINE
333: N 0001 EOF EQU 01 ;END OF FILE CHARACTER
334: N 0001 ASTKAH EQU 01 ;ASTKA IS IN PAGE 1 OF RAM
335: N 0000 CSTKAH EQU 00 ;CSTKA IS IN PAGE 0 OF RAM
336: N 0001 FTYPE EQU 01 ;CONTROL STACK "FOR"
337: N 0002 GTYPE EQU 02 ;CONTROL STACK "GOSUB"
338: N 0003 DTYPE EQU 03 ;DO-WHILE/UNTIL TYPE
339: N 8000 ROMADR EQU 8000H ;LOCATION OF ROM
340: ;
341: ; The floating point equates
342: ;
343: N 0006 FPSIZ EQU 6 ;NO. OF BYTES IN A FLOATING NUM
344: N 0004 DIGIT EQU FPSIZ-2 ;THE MANTISSA OF A FLOATING NUM
345: N 0009 STESIZ EQU FPSIZ+3 ;SIZE OF SYMBOL ADJUSTED TABLE ELEMENT
346: N 1993 FP_BASE EQU 1993H ;BASE OF FLOATING POINT ROUTINES
347: N 0200 PSTART EQU 512 ;START OF A PROGRAM IN RAM
348: N 0011 FSIZE EQU FPSIZ+FPSIZ+2+2+1
349: ;
350: $EJECT
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 11
Line I Addr Code Source
351: ;**************************************************************
352: ;
353: 0047 USENT: ; User entry jump table
354: ;
355: ;**************************************************************
356: ;
357: 0047 17 85 DW CMND1 ;(00, 00H)COMMAND MODE JUMP
358: 0049 12 15 DW IFIX ;(01, 01H)CONVERT FP TO INT
359: 004B 0F E6 DW PUSHAS ;(02, 02H)PUSH VALUE ONTO ARG STACK
360: 004D 0F DC DW POPAS ;(03, 03H)POP VALUE OFF ARG STACK
361: 004F 04 95 DW PG1 ;(04, 04H)PROGRAM A PROM
362: 0051 06 D0 DW INLINE ;(05, 05H)INPUT A LINE
363: 0053 06 B7 DW UPRNT ;(06, 06H)PRINT A LINR
364: 0055 06 9D DW CRLF ;(07, 07H)OUTPUT A CRLF
365: ;
366: ;**************************************************************
367: ;
368: ; This is the operation jump table for arithmetics
369: ;
370: ;**************************************************************
371: ;
372: 0057 13 9E OPTAB: DW ALPAR ;(08, 08H)LEFT PAREN
373: 0059 13 1D DW AEXP ;(09, 09H)EXPONENTAION
374: 005B 11 A2 DW AMUL ;(10, 0AH)FP MUL
375: 005D 17 3F DW AADD ;(11, 0BH)FLOATING POINT ADD
376: 005F 13 FC DW ADIV ;(12, 0CH)FLOATING POINT DIVIDE
377: 0061 17 1A DW ASUB ;(13, 0DH)FLOATING POINT SUBTRACTION
378: 0063 14 8A DW AXRL ;(14, 0EH)XOR
379: 0065 14 76 DW AANL ;(15, 0FH)AND
380: 0067 14 7F DW AORL ;(16, 10H)OR
381: 0069 13 93 DW ANEG ;(17, 11H)NEGATE
382: 006B 13 CD DW AEQ ;(18, 12H)EQUAL
383: 006D 13 D9 DW AGE ;(19, 13H)GREATER THAN OR EQUAL
384: 006F 13 DD DW ALE ;(20, 14H)LESS THAN OR EQUAL
385: 0071 13 D3 DW ANE ;(21, 15H)NOT EQUAL
386: 0073 13 C8 DW ALT ;(22, 16H)LESS THAN
387: 0075 13 B7 DW AGT ;(23, 17H)GREATER THAN
388: ;
389: $EJECT
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 12
Line I Addr Code Source
390: ;***************************************************************
391: ;
392: ; This is the jump table for unary operators
393: ;
394: ;***************************************************************
395: ;
396: 0077 13 81 DW AABS ;(24, 18H)ABSOLUTE VALUE
397: 0079 13 5F DW AINT ;(25, 19H)INTEGER OPERATOR
398: 007B 13 87 DW ASGN ;(26, 1AH)SIGN OPERATOR
399: 007D 14 88 DW ANOT ;(27, 1BH)ONE'S COMPLEMENT
400: 007F 11 5F DW ACOS ;(28, 1CH)COSINE
401: 0081 11 C2 DW ATAN ;(29, 1DH)TANGENT
402: 0083 11 63 DW ASIN ;(30, 1EH)SINE
403: 0085 12 7F DW ASQR ;(31, 1FH)SQUARE ROOT
404: 0087 13 9F DW ACBYTE ;(32, 20H)READ CODE
405: 0089 13 19 DW AETOX ;(33, 21H)E TO THE X
406: 008B 11 D2 DW AATAN ;(34, 22H)ARC TANGENT
407: 008D 12 B2 DW ALN ;(35, 23H)NATURAL LOG
408: 008F 13 A8 DW ADBYTE ;(36, 24H)READ DATA MEMORY
409: 0091 13 B0 DW AXBYTE ;(37, 25H)READ EXTERNAL MEMORY
410: 0093 14 71 DW PIPI ;(38, 26H)PI
411: 0095 13 E3 DW ARND ;(39, 27H)RANDOM NUMBER
412: 0097 14 9B DW AGET ;(40, 28H)GET INPUT CHARACTER
413: 0099 17 0F DW AFREE ;(41, 29H)COMPUTE #BYTES FREE
414: 009B 17 1F DW ALEN ;(42, 2AH) COMPUTE LEN OF PORGRAM
415: 009D 0F E2 DW AXTAL ;(43, 2BH) CRYSTAL
416: 009F 16 41 DW PMTOP ;(44, 2CH)TOP OF MEMORY
417: 00A1 17 27 DW ATIME ;(45, 2DH) TIME
418: 00A3 14 AB DW A_IE ;(46, 2EH) IE
419: 00A5 14 AF DW A_IP ;(47, 2FH) IP
420: 00A7 14 B3 DW ATIM0 ;(48, 30H) TIMER 0
421: 00A9 14 B9 DW ATIM1 ;(49, 31H) TIMER 1
422: 00AB 14 BF DW ATIM2 ;(50, 32H) TIMER 2
423: 00AD 14 C5 DW AT2CON ;(51, 33H) T2CON
424: 00AF 14 C9 DW ATCON ;(52, 34H) TCON
425: 00B1 14 CD DW ATMOD ;(53, 35H) ATMOD
426: 00B3 14 D1 DW ARCAP2 ;(54, 36H) RCAP2
427: 00B5 14 D7 DW AP1 ;(55, 37H) P1
428: 00B7 14 DB DW APCON ;(56, 38H) PCON
429: 00B9 0F 4C DW EXPRB ;(57, 39H) EVALUATE AN EXPRESSION
430: 00BB 16 4E DW AXTAL1 ;(58, 3AH) CALCULATE CRYSTAL
431: 00BD 14 E2 DW LINE ;(59, 3BH) EDIT A LINE
432: 00BF 15 AC DW PP ;(60, 3CH) PROCESS A LINE
433: 00C1 10 8C DW UPPL-3 ;(61, 3DH) UNPROCESS A LINE
434: 00C3 0D 6E DW VAR ;(62, 3EH) FIND A VARIABLE
435: 00C5 0E D6 DW GC ;(63, 3FH) GET A CHARACTER
436: 00C7 0E DE DW GCI ;(64, 40H) GET CHARACTER AND INCREMENT
437: 00C9 07 89 DW INCHAR ;(65, 41H) INPUT A CHARACTER
438: 00CB 08 06 DW CRUN ;(66, 42H) RUN A PROGRAM
439: $EJECT
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 13
Line I Addr Code Source
440: 00CD 01 OPBOL: DB 1 ;
441: ;
442: 00CE 0F DB 15 ;LEFT PAREN
443: 00CF 0E DB 14 ;EXPONENTIAN **
444: 00D0 0A DB 10 ;MUL
445: 00D1 08 DB 8 ;ADD
446: 00D2 0A DB 10 ;DIVIDE
447: 00D3 08 DB 8 ;SUB
448: 00D4 03 DB 3 ;XOR
449: 00D5 05 DB 5 ;AND
450: 00D6 04 DB 4 ;OR
451: 00D7 0C DB 12 ;NEGATE
452: 00D8 06 DB 6 ;EQ
453: 00D9 06 DB 6 ;GT
454: 00DA 06 DB 6 ;LT
455: 00DB 06 DB 6 ;NE
456: 00DC 06 DB 6 ;LE
457: 00DD 06 DB 6 ;GE
458: ;
459: 00DE 0F UOPBOL: DB 15 ;AABS
460: 00DF 0F DB 15 ;AAINT
461: 00E0 0F DB 15 ;ASGN
462: 00E1 0F DB 15 ;ANOT
463: 00E2 0F DB 15 ;ACOS
464: 00E3 0F DB 15 ;ATAN
465: 00E4 0F DB 15 ;ASIN
466: 00E5 0F DB 15 ;ASQR
467: 00E6 0F DB 15 ;ACBYTE
468: 00E7 0F DB 15 ;E TO THE X
469: 00E8 0F DB 15 ;AATAN
470: 00E9 0F DB 15 ;NATURAL LOG
471: 00EA 0F DB 15 ;DBYTE
472: 00EB 0F DB 15 ;XBYTE
473: ;
474: $EJECT
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 14
Line I Addr Code Source
475: ;***************************************************************
476: ;
477: ; The ASCII printed messages.
478: ;
479: ;***************************************************************
480: ;
481: 00EC 53 54 4F 50 STP: DB 'STOP"'
00F0 22
482: ;
483: 00F1 54 52 59 20 IAN: DB 'TRY AGAIN"'
00F5 41 47 41 49
00F9 4E 22
484: ;
485: 00FB 52 45 41 44 RDYS: DB 'READY"'
00FF 59 22
486: ;
487: 0101 20 2D 20 49 INS: DB ' - IN LINE "'
0105 4E 20 4C 49
0109 4E 45 20 22
488: ;
489: ;**************************************************************
490: ;
491: ; This is the command jump table
492: ;
493: ;**************************************************************
494: ;
495: 010D 08 06 CMNDD: DW CRUN ;RUN
496: 010F 10 3A DW CLIST ;LIST
497: 0111 0B 10 DW CNULL ;NULL
498: 0113 06 54 DW CNEW ;NEW
499: 0115 18 3F DW CCONT ;CONTINUE
500: 0117 04 61 DW CPROG ;PROGRAM A PROM
501: 0119 17 71 DW CXFER ;TRANSFER FROM ROM TO RAM
502: 011B 17 7D DW CRAM ;RAM MODE
503: 011D 05 36 DW CROM ;ROM MODE
504: 011F 04 5A DW CIPROG ;INTELLIGENT PROM PROGRAMMING
505: ;
506: $EJECT
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 15
Line I Addr Code Source
507: ;***************************************************************
508: ;
509: ; This is the statement jump table.
510: ;
511: ;**************************************************************
512: ;
513: 0121 STATD: ;
514: 0121 09 76 DW SLET ;LET 80H
515: 0123 06 87 DW SCLR ;CLEAR 81H
516: 0125 0A 7E DW SPUSH ;PUSH VAR 82H
517: 0127 0A B2 DW SGOTO ;GO TO 83H
518: 0129 16 84 DW STONE ;TONE 84H
519: 012B 0C 31 DW SPH0 ;PRINT MODE 0 85H
520: 012D 19 2C DW SUI ;USER INPUT 86H
521: 012F 19 31 DW SUO ;USER OUTPUT 87H
522: 0131 0A 85 DW SPOP ;POP VAR 88H
523: 0133 0C 35 DW SPRINT ;PRINT 89H
524: 0135 0E 6C DW SCALL ;CALL 8AH
525: 0137 0D 6A DW SDIMX ;DIMENSION 8BH
526: 0139 06 04 DW STRING ;STRING ALLO 8CH
527: 013B 16 F7 DW SBAUD ;SET BAUD 8DH
528: 013D 19 19 DW SCLOCK ;CLOCK 8EH
529: 013F 0C 33 DW SPH1 ;PRINT MODE 1 8FH
530: ;
531: ; No direct mode from here on
532: ;
533: 0141 08 5C DW SSTOP ;STOP 90H
534: 0143 0E 5F DW SOT ;ON TIME 91H
535: 0145 14 0B DW SONEXT ;ON EXT INT 92H
536: 0147 0B 16 DW SRETI ;RET FROM INT 93H
537: 0149 0F 0E DW S_DO ;DO 94H
538: 014B 0B D6 DW SRESTR ;RESTOR 95H
539: 014D 0F 05 DW WCR ;REM 96H
540: 014F 0B 67 DW SNEXT ;NEXT 97H
541: 0151 14 01 DW SONERR ;ON ERROR 98H
542: 0153 0C F4 DW S_ON ;ON 99H
543: 0155 0D FE DW SINPUT ;INPUT 9AH
544: 0157 0B EB DW SREAD ;READ 9BH
545: 0159 0E F5 DW FINDCR ;DATA 9CH
546: 015B 0B 18 DW SRETRN ;RETURN 9DH
547: 015D 0A 8E DW SIF ;IF 9EH
548: 015F 0B 35 DW SGOSUB ;GOSUB 9FH
549: 0161 0A 44 DW SFOR ;FOR A0H
550: 0163 0B 04 DW SWHILE ;WHILE A1H
551: 0165 0B 09 DW SUNTIL ;UNTIL A2H
552: 0167 17 85 DW CMND1 ;END A3H
553: 0169 18 5C DW I_DL ;IDLE A4H
554: 016B 0F EE DW ST_A ;STORE AT A5H
555: 016D 0F F2 DW LD_A ;LOAD AT A6H
556: 016F 05 0C DW PGU ;PGM A7H
557: 0171 07 BC DW RROM ;RUN A ROM A9H
558: ;
559: $EJECT
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 16
Line I Addr Code Source
560: ;**************************************************************
561: ;
562: 0173 TOKTAB: ; This is the basic token table
563: ;
564: ;**************************************************************
565: ;
566: ; First the tokens for statements
567: ;
568: 0173 80 DB 80H ;LET TOKEN
569: 0174 4C 45 54 DB 'LET'
570: ;
571: 0177 81 DB 81H ;CLEAR TOKEN
572: 0178 43 4C 45 41 DB 'CLEAR'
017C 52
573: ;
574: 017D 82 DB 82H ;PUSH TOKEN
575: 017E 50 55 53 48 DB 'PUSH'
576: ;
577: N 0083 T_GOTO EQU 83H
578: ;
579: 0182 83 DB 83H ;GO TO TOKEN
580: 0183 47 4F 54 4F DB 'GOTO'
581: ;
582: 0187 84 DB 84H ;TOGGLE TOKEN
583: 0188 50 57 4D DB 'PWM'
584: ;
585: 018B 85 DB 85H ;PRINT HEX MODE 0
586: 018C 50 48 30 2E DB 'PH0.'
587: ;
588: 0190 86 DB 86H ;USER IN TOKEN
589: 0191 55 49 DB 'UI'
590: ;
591: 0193 87 DB 87H ;USER OUT TOKEN
592: 0194 55 4F DB 'UO'
593: ;
594: 0196 88 DB 88H ;POP TOKEN
595: 0197 50 4F 50 DB 'POP'
596: ;
597: $EJECT
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 17
Line I Addr Code Source
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -