ASMB,R HED <> 92065-16001 NAM BASC8,7 92065-16001 REV.1650 761022 * * REVISED 3-31-76 * * SOURCE 92065-18007 * ************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1975. ALL RIGHTS * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ************************************************************** ENT BASC8,ERROR EXT IFBRK,TRAP,RDYPT,OUTER,OUTLN,OUTIN,WRITE,FINDV EXT IFIX,PRNIN,REED,SERR,FLOAT,.ENTR COM TEMPS(30),PNTRS(61),SPEC(10) ***************************************** * * * SEGMENT #8: EXECUTE THE PROGRAM * * * ***************************************** * * THIS PART OF THE INTERPRETER IS LOADED BY THE EXECUTE PHASE OF * BASIC TO PERFORM CERTAIN FUNCTION WHICH ARE NOT TIME CRITICAL. * CONTROL IS PASSED TO THIS SEGMENT WITH THE VARIABLE 'XSEG7' IN- * DICATING WHICH FUNCTION IS TO BE PERFORMED. AFTER COMPLETION OF * THE FUNCTION, CONTROL IS RETURNED TO EXECUTE SEGMENT 4 AND * EXECUTION OF THE USER'S PROGRAM IS RESUMED. SKP *************************** * * * CONSTANTS AND VARIABLES * * * *************************** * FWAM EQU PNTRS FIRST WORD OF AVAILABLE MEMORY LWBM EQU PNTRS+1 LAST WORD OF AVAILABLE MEMORY .INBF EQU PNTRS+2 INPUT BUFFER ADDRESS SBUFA EQU PNTRS+3 SYNTAX BUFFER ADDRESS SYMTA EQU PNTRS+4 START OF SYMBOL TABLE SYMTF EQU PNTRS+5 END OF SYMBOL TABLE PBUFF EQU PNTRS+6 FIRST WORD OF USER PROGRAM PBPTR EQU PNTRS+7 LAST WORD+1 OF USER PROGRAM INBFA EQU PNTRS+8 INPUT BUFFER POINTER ICCNT EQU PNTRS+9 INPUT CHARACTER COUNT SBPTR EQU PNTRS+10 SYNTAX BUFFER POINTER .LNUM EQU PNTRS+11 CURRENT LINE # FCORE EQU PNTRS+12 START OF FREE CORE MNNAM EQU PNTRS+13 MNEMONIC TABLE NAME:SC:LU BRNAM EQU PNTRS+18 BRANCH TABLE NAME:SC:LU FWAMM EQU PNTRS+23 POINTER TO START OF MNEMONIC TABLE FWAMB EQU PNTRS+24 POINTER TO START OF BRANCH TABLE .OTBF EQU PNTRS+25 POINTER TO OUTPUT BUFFER OCCNT EQU PNTRS+26 OUTPUT CHARACTER COUNT OTBFA EQU PNTRS+27 POINTER INTO OUTPUT BUFFER LUOUT EQU PNTRS+28 CURRENT OUTPUT L.U. # LUINP EQU PNTRS+29 CURRENT INPUT L.U. # SIGN EQU PNTRS+30 SIGN OF CURRENT NUMBER BLANK EQU PNTRS+31 CURRENT TERMINATION CHAR REC# EQU PNTRS+32 COMMAND FILE RECORD NUMBER FLTYP EQU PNTRS+33 TYPE 0 FILE FLAG TTYPR EQU PNTRS+34 CONSOLE TTY L.U. # PRINT EQU PNTRS+35 LISTING L.U. # READR EQU PNTRS+36 AUXILLIARY INPUT L.U. # PUNCH EQU PNTRS+37 AUXILLIARY OUTPUT L.U. # ERTTY EQU PNTRS+38 ERROR LIST OUTPUT L.U. # DCB EQU PNTRS+39 DATA CONTROL BLOCK ADDRESS FILBK EQU PNTRS+40 FILE CONTROL BLOCK ADDRESS PFLAG EQU PNTRS+41 SAVE,LOAD FILE FLAG LOLIM EQU PNTRS+42 LOW LIMITS OF PROGRAM HILIM EQU PNTRS+43 HIGH LIMITS OF PROGRAM LORUN EQU PNTRS+44 LOW RUN LIMITS HIRUN EQU PNTRS+45 HIGH RUN LIMITS SLSTM EQU PNTRS+46 EXECUTE SLOW STMTS LOTRC EQU PNTRS+47 LOW TRACE LIMITS HITRC EQU PNTRS+48 HIGH TRACE LIMITS BRKP1 EQU PNTRS+49 BREAK POINT #1 BRKP2 EQU PNTRS+50 BREAK POINT #2 BRKP3 EQU PNTRS+51 BREAK POINT #3 BRKP4 EQU PNTRS+52 BREAK POINT #4 SMFLG EQU PNTRS+53 SIMULATE FLAG TYPE EQU PNTRS+54 PARTIAL LINE CHARACTER COUNT DLMTR EQU PNTRS+55 CHAR EDIT DELIMITER MERGF EQU PNTRS+56 MERGE FLAG SKP HSTPT BSS 1 HIGH-STACK POINTER PRADD BSS 1 PROGRAM EXECUTION TEMPT BSS 7 SPC 1 SUP PRESS MULTIPLE LISTINGS SPC 1 .2 DEC 2 B200 OCT 200 B377 OCT 377 HIMSK OCT 177400 M2 DEC -2 M10 DEC -10 M16 DEC -16 M20 DEC -20 M32 DEC -32 PMESS DEF *+1 OCT 6412 ASC 4,PAUSE _ : QMARK DEF *+1 ASC 1,?? AMESS DEF *+1 OCT 6412 ASC 15,OPERATOR TERMINATION IN LINE _ : GO ASC 1,GO CTRLQ OCT 10400 SKP * ********************************* * * * OVERFLOW STMT ADDRESS TABLE * * * ********************************* * XECTB DEF * STATEMENT ADDRESS TABLE NOP .PLACE HOLDER DEF EPAZ 2-PAUSE STMT DEF EEND 3-STOP END STMT DEF OPEND 4-END STMT * SKP **************************************** * * * EXECUTE THE OVERFLOW STMT FROM SEG 4 * * * **************************************** * BASC8 NOP LDA SLSTM EXECUTE ADA XECTB REQUEST LDA 0,I FROM SEGMENT 4 JMP 0,I * SPC 3 ********************* * * ** EXECUTE PAUSE ** * * ********************* * EPAZ LDA M10 WRITE LDB PMESS 'PAUSE' JSB WRITE MESSAGE JSB PRNIN INITIALIZE FOR NUMBER ISZ TEMPS LDB TEMPS ANY CPB PRADD PARAMETER? JMP EPAZ1 NO! ISZ TEMPS DLD TEMPS,I GET PARAMETER JSB IFIX INTEGERIZE EPAZ2 JSB OUTIN PRINT NUMBER JSB OUTLN EPAZ3 LDA M2 READ LDB .INBF INPUT JSB REED 'GO' LDA .INBF,I CPA GO 'GO'? JMP BASC8,I .RETURN AND HIMSK CPA CTRLQ ABORT PROGRAM? JMP OPND1 YES, BUT DO NOT PUSH AND SHOVE LDA M2 NO, SO LDB QMARK OUTPUT JSB WRITE DOUBLE '??' JMP EPAZ3 EPAZ1 CLA ZERO JMP EPAZ2 PAUSE SKP ************************ * * ** EXECUTE END/STOP ** * * ************************ * * OPEND JSB IFBRK CLEAR ATTENTION DEF *+1 BIT OPND1 LDA ERTTY SET UP STA LUOUT ERROR LU LDB AMESS PRINT LDA M32 MESSAGE JSB WRITE INDICATING JSB PRNIN OPERATOR LDA .LNUM TERMINATION JSB OUTIN OF JSB OUTLN PROGRAM EEND EQU * OUTPUT LDB FCORE SET UP POINTER ADB M20 TO OUTPUT ANY STB TEMP4 PARTIAL LINES LULOP LDA TEMP4,I IN THE LU TABLE SZA,RSS IS THIS SLOT ASSIGNED ? JMP LUNXT NO, TRY THE NEXT ONE ALF,ALF YES, ISOLATE THE LU AND B377 IOR B200 STA LUOUT SAVE THE LU WORD JSB FINDV AND DISCOVER THE EQUIPMENT TYPE STA 1 ADA M16 IS THIS DEVICE TYPE SSA,RSS < 20(8) ? JMP LUNXT NO, TRY THE NEXT STA FLTYP YES, SET FOR NON-FILE WRITE CLA SET UP A NULL LDB PMESS WRITE OPERATION JSB WRITE ON THIS LU LUNXT ISZ TEMP4 POINT TO THE NEXT LU WORD LDA TEMP4 AND CHECK IF CPA FCORE WE ARE DONE RSS YES JMP LULOP NO, GO BACK FOR ANOTHER * CLA CLEAR STA SLSTM SEG 8 FLAG LDA .2 CLEAR JSB TRAP TRAP TABLE NOP LDA TEMP3 WAS THIS AN SZA ERROR EXIT ? JMP OUTER YES ! STA .LNUM RESET POINTER TO START OF PROGRAM JMP RDYPT NO, GO TO READY * * SKP ************************************ * * * ERROR MESSAGE PROCESSOR FOR * TRAP AND SCHED MODULES * * * ************************************ * B2000 OCT 2000 IERR DEF * ERMSG DEF * ERROR NOP JSB .ENTR .FETCH ERROR # AND MESSAGE DEF IERR LDA IERR,I .FETCH ERROR NUMBER JSB FLOAT .MAKE REAL FOR SERR INPUT JSB SERR .POST ERROR NUMBER IN ERRCD * LDA ERTTY .SET HONESTY MODE IN OUTPUT IOR B2000 . CRT STA LUOUT LDA ERRL .PRINT "ERROR" LDB ERRM JSB WRITE LDA ERMSG,I .FETCH MESSAGE LENGTH ISZ ERMSG LDB ERMSG .FETCH MESSAGE ADDRESS JSB WRITE . AND OUTPUT LDA M2 LDB DSHM .PRINT " -" JSB WRITE JSB PRNIN . RESET OUTPUT BUFFER LDA IERR,I .FETCH ERROR CODE JSB OUTIN .CONVERT TO ASCII JSB OUTLN . OUTPUT LDA LINEL .OUTPUT "IN LINE " LDB LINEM JSB WRITE LDA ERTTY .SET ERROR CRT TO NORMAL MODE STA LUOUT JSB PRNIN .CONVERT LINE # TO ASCII LDA .LNUM JSB OUTIN .AND PRINT JSB OUTLN JMP ERROR,I .EXIT * ERRL DEC -6 ERRM DEF *+1 ASC 3,ERROR DSHM DEF *+1 ASC 1, - LINEL DEC -8 LINEM DEF *+1 ASC 4,IN LINE * TEMP3 EQU TEMPS+4 TEMP4 EQU TEMPS+5 END