REM BASIC COMPILER BAS00010
REM ********** 00020
REM TELEBASIC REV. 1 00030
REM BASIC AND TEACH COMBINED 00040
REM 8 FEB 65 00050
REM 3 00060
REM ON TAPE 13 00070
REM ********** 00080
REM PRIMARY MEMORY ALLOCATION 00090
REM COMPILE TIME STORAGE ALLOCATION 00100
REM ********** 00110
REM USE OF INDEX GROUPS 00120
REM GROUP 0 IS THE STANDARD GROUP AND IS USED 00130
REM BY ALMOST EVERYTHING. 00140
REM GROUP 1 IS USED BY PRINT AND INPUT. IT 00150
REM IS NOT PRESERVED. 00160
REM GROUP 4 IS FREQUENTLY DESTROYED BY DATA 00170
REM RUN-TIME USE OF INDEX GROUPS 00180
REM GROUP 0 ALMOST EVERYTHING 00190
REM GROUP 1-- REAL TIME INPUT 00200
REM GROUP 2-- XR21 IS USED BY POP AND PUSH AND MUST 8 00210
REM PRESERVERVED THROUGHOUT RUN-TIME 00220
REM GROUP 4--DESTROYED BY DISK USE 00230
REM 00240
00205 TRPLOC EQO 205 TRAP INDEX GROUP 33 00250
01400 WORK EQO 1400 CONSTANTS AND SOME RUN-TIME SUBROUTINES 00260
04000 LOC 4000 SAVE AREA 00270
04000 TIME BSS 1 ADJUSTED STARTING TIME 00280
04001 EXON BSS 1 OUTPUT BUFFER POINTER 00290
04002 ENTIRE BSS 1 COMBINED LENGTH OF TESTED AND TESTER 00300
04003 LENGTH BSS 1 LENGTH OF SOURCE PROGRAM [MOD 64] 00310
06000 UX EQO 6000 PICK UP SOURCE HERE 00320
04100 LOC 4100 COMPILE TIME USE OF 4100 TO BEGINNING OF EXL 00330
04100 E BSS 400 ERROR MESSAGE OUTPUT BUFFER 00340
04720 VC BSS 72 WORKING STORAGE 00350
05030 T BSS 24 TEMPORARY STORAGE 00360
05060 L BSS 80 LINE TRANSLATION BUFFER 00370
05200 F BSS 480 FIRST ORDERS OF INSTRUCTIONS 00380
REM FIRST WORD--BINARY LINE NO. 00390
REM SECOND WORD--LOCATION 00400
06140 ARB BSS 150 ARITH ROUTINE OBJECT BUFFER 00410
06366 ARU BSS 50 ARITH ROUTINE WORKING SRTOE 00420
06450 N BSS 42 USED TO COMPILE FOR STATEMENTS 00430
REM WORD TRIPLES 00440
REM WORD 1--LOC OF INDEX VARIABLE 00450
REM WORD 2--LOC OF INTERIOR OF LOOP 00460
REM WORD3--LOC OF RUNTIME STORE 00470
REM 00480
REM RUN-TIME USE OF AREA BETWEEN 4100 AND EXL 00490
04100 LOC 4100 00500
04100 EXO BSS 860 OUTPUT BUFFER 00510
05634 EXIR BSS 104 TEMP STORE FOR FOR LOOPS. 4 WORDS PER LOOP 00520
06004 EXU BSS 100 TEMP STORE FOR ARITHMETIC STATEMENTS 00530
06150 TEMP BSS 22 TEMP STORE FOR STANDARD ROUTINES [SIN,ETC] 00540
06176 WS BSS 50 WORKING STORAGE FOR RUNTIME ROUTINES 00550
06260 RST EQU * STACK OF RETURN ADDRESS FOR GOSUBS 00560
REM 00570
REM REST OF 6K AREA USED IN COMMON BY COMPILE AND RUN 00580
06522 ORG N+42 00590
06522 EXL BSS 150 GENERATED CONSTANTS 00600
06750 G BSS 80 GO-TABLE 00610
REM DURING RUN BRANCHES, DURING COMPILE 00620
REM BINARY LINE NO.S 00630
07070 B BSS 42 COMMUNICATION BETWEEN COMPILE AND RUN 00640
07142 BSS 22 UNUSED [HELD TO FORCE DATA TO MOD 64] 00650
07170 PLIST BSS 4 FILE CONTROL LIST FOR DATA I/O 00660
07174 DATAJ BSS 1 REGION POINTER [RENGE 0-255] 00670
07175 DATAI BSS 1 BUFFER POINTER [ RANGE 0-127] 00680
07176 DEND BSS 1 LAST RECORD OF DATA 00690
07177 DREC BSS 1 LAST READ RECORD [NEXT TO BE PROCESSED] 00700
07200 D BSS 256 DATA REGION 00710
07600 BSS 1 RESERVED FOR DISK PARITY ERRORS 00720
07601 DPNT BSS 1 CURRENT DATA REORD 00730
07602 FNT BSS 28 FUNCTION DEFINITION TRANFER TABLE 00740
07636 DIMX BSS 54 DIMENSION TABLE. WORD PAIRS-- 00750
REM WORD 1--ABS LOC OF 1ST ELEMENT 00760
REM WORD 2-- # OF COL AT B89 00770
REM # OF ROWS AT B19 00780
07724 P EQU * OBJECT AND VARIABLE AREA 00790
17326 VARTAR EQO 17326 SYMBOL TABLE. DESTROYED AT RUN TIME 00800
17764 DS EQO 17764 $ VARIABLE PORTON OF SYMBOL TABLE 00810
17777 TOP EQO 17777 TOP OF LOWER MEMORY 00820
REM ********** 00830
REM ********** 00840
REM HEADING FOR TIME SHARING EXECUTIVE 00850
20000 LOC 20000 00860
20000 0000000 DEC 0 THIS LOCATION IS FIELD IN BY THE EXEC 00870
20001 2600012 BRU START INITIAL ENTRY POINT 00880
20002 3777777 DEC -1 BRANCH TO CLEANUP IF SCRATCH DISK IS USED 00890
20003 3777777 DEC -1 SAVED FOR FUTURE COMPATIBILITY 00900
20004 0222162 ALF BAS SYSTEM NAME 00910
20005 0000000 DEC 0 0VERLAY NUMBER 00920
20006 0001400 DEC WORK TO LOCATION FOR INITIAL MOVE 00930
20007 3775400 DEC -1280 THIS NAY WORDS 00940
20010 0031400 OCT 31400 FROM THIS LOCATION 00950
20011 0070002 OCT 70002 00960
NAM COMPILER INITIALIZATION 00970
EJT 00980
20012 2506016 START SET PBK AVOID INTERRUPT UNTIL LENGTH AND ENTIRE 00990
REM ARE PICKED UP 01000
20013 2506013 SXG 0 MAIN INDEX GROUP 01010
20014 1003644 OLD TRPBR INITIALIZE TRAP LOCATIONS 01020
20015 1300206 DST TRPLOC+1 01030
20016 0300205 STA TRPLOC 01040
REM THE NEXT DOZEN INSTRUCTIONS DETERMINE FROM 01050
REM THE SIGN OF LENGTH WHTHER THIS IS A TEACH 01060
REM OR BASIC RUN. LENGTH HAS A MINUS SIGN 01070
REM TACKED ON IF THE PROGRAM IS TO BE TEACH. 01080
20017 0004003 LDA LENGTH LENGTH OF SOURCE OR PROGRAM TO BE TESTED PART 01090
20020 2511000 SRQ 0 SAVE THE SIGN IN Q 01100
20021 2002657 EXT SIGN 01110
20022 0300001 STA XR01 HOLD IN XR UNTIL MEMORY HAS BEEN CLEARED 01120
20023 2512200 SLD 0 GET BACK THE SIGN BIT 01130
20024 2510023 SRA 19 SET A TO -1 OR 0 DEPENDING ON SIGN BIT 01140
20025 0300002 STA XR02 HOLD IN INDEX UNTIL 6K AREA IS CLEANED UP 01150
20026 2516002 BNZ 01160
20027 2600032 BRU ++3 01170
20030 0000001 LDA XR01 LENGTH OF SOURCE IF THIS IS BASIC 01180
20031 2600033 BRU ++2 01190
20032 0004002 LDA ENTIRE LENGTH OF PROG TO BE TESTED AND TESTER 01200
20033 2512006 SLA 6 01210
20034 2506015 SET PST JHON CAN NOW FUDGE UP THE SAV AREA 01220
20035 2504522 NE* 01230
20036 2504004 LQA GET READY FOR MOV 01240
20037 0103463 ADD VARLOC GIVES TO ADDRESS 01250
20040 0300003 STA XR03 POINTS TO BEGINNING OF SOURCE PROGRAM 01260
20041 2406000 MOV UX MOVE SOURCE PROGRAM UP 01270
20042 0002726 LDA ZEP0 01280
digtal西行庵MoinMoinWiki