// DATE 270915 // NOHALT * *** RUN MAINT. * // LOAD $MAINT,F1 // RUN // COPY FROM-READER,TO-F1,RETAIN-R,LIBRARY-S,NAME-@FXD MACRO @FXD &EXP-N .* .* 5703-XM1 FIXED ADDRESSES FOR SYSTEM NUCLEUS. .* TEXT PRINT OFF AIF (&EXP EQ 'Y').ON PRINT ON REQUESTED ? AIF (&EXP EQ 'N').OFF PRINT OFF REQUESTED ? .ERR MNOTE 00,'INVALID MACRO OPTION SPECIFIED.' AGO .MEND .ON ANOP PRINT ON .OFF ANOP TITLE '@FXDEQ - FIXED ADDRESSES FOR SYSTEM NUCLEUS' ********************************************************************** * GLOBAL INDICATORS STORED IN THE SYSTEM NUCLEUS, ENTRY POINTS * * FOR SYSNUC INTERFACE ROUINES. * ********************************************************************** ORG X'0000' * $$ZERO EQU * ENTRY POINT TO LOAD DUMP PGM $FEARR EQU $$ZERO+4 VALUE OF ADDR IN ARR ON FE AID * $DISKN EQU $$ZERO+37 ADDR OF ENTRY TO DISK IOCS $KE090 EQU $$ZERO+X'00DE' ADDR OF DKDISK ERR-PEND EXIT $KE130 EQU $$ZERO+X'01D5' ADDR OF DKDISK HARD ERROR EXIT SPACE 1 ORG X'0345' * $ERLOG EQU * ADDR OF ENTRY TO LOG I/O ERRORS $ER050 EQU $$ZERO+X'0363' START OF DISK OPS IN NERLOG SPACE 1 ********************************************************************** * COMMUNICATION AREA REFERENCING NUCLEUS * ********************************************************************** * ORG X'03C0' * $NUCBS EQU * START OF COMMUNICATION AREA $RMRGN EQU $NUCBS ADDR OF BYTE CONTAINING THE * * SOFTWARE RIGHT MARGIN VALUE $LMRGN EQU $RMRGN+1 ADDR OF BYTE CONTAINING THE * * SOFTWARE LEFT MARGIN VALUE $PRPOS EQU $LMRGN+1 ADDR OF BYTE CONTAINING CURRENT * * POSITION OF MATRIX PRINTER * * HEAD $KEYCD EQU $PRPOS+1 ADDR OF BYTE CONTAINING KEYBOARD * * INDICATORS. A LIST OF THE * * INDICATORS AND MASKS FOLLOW $CARDI EQU X'01' INPUT SOURCE INDR MASK * * 0 - KEYBOARD INPUT * * 1 - CARD OR PROC INPUT $IOYES EQU X'02' I/O ROUTINES IN CORE INDR MASK * * 0 - I/O ROUTINES NOT IN CORE * * 1 - I/O ROUTINES IN CORE $NOLST EQU X'04' NO LIST INDR MASK * * 0 - LISTING REQUIRED * * 1 - NO LISTING RESIRED $GUFIR EQU X'08' GUFUDI ABORT INDR * * 1 - GUFUDI INTERRUPT, NOT ABORT * * 0 - GUFUDI ABORTED * * FOR THE ABOVE INDICATOR TO BE * * VALID, $INTRP MUST BE PRESENT $KYBSY EQU X'10' KEYBOARD BUSY INDR * * 0 - LINE FINISHED * * 1 - LINE NOT YET COMPLETE $INRPT EQU X'20' INTERRUPT INDR * * 0 - PROGRAM NOT ABORTED * * 1 - PROGRAM ABOPRTED $DTNMB EQU X'40' * 1 - AUTOMATIC LINE NUMBERS * * GENERATED FOR CARD INPUT $TRUNK EQU X'80' TRUNCATED LINE INDR * * 1 - LAST LINE TRUNCATED * * 0 - LAST LINE COMPLETED EJECT ********************************************************************** * REGISTER SAVE AREAS. THESE AREAS ARE AVAILABLE FOR * * TEMPORARELY USE BY ANY PROGRAM * ********************************************************************** SPACE $BRSAV EQU $KEYCD+2 ADDR OF 2 BYTE BASE REG SAVE $XRSAV EQU $BRSAV+2 ADDR OF 2 BYTE XR SAVE AREA SPACE 1 $TABLN EQU $XRSAV+4 CURRENT AUTOMATIC LINE NUMBER * * TO BE INSERTED IF TAB KEY * * PRESSED. (ADDR OF LINE NO.) $CAERR EQU $TABLN+2 ADDR OF ERROR CODE SAVED FOR * * INTERFACE WITH ERRPGM $INLNO EQU $CAERR+2 ADDR OF EXECUTION TIME LINE * * NUMBER FOR INTERPRETER $ERRPG EQU $INLNO-1 ADDR OF INDICATOR BYTE IF * * SPECIAL FUNCTION REQUESTED * * OF ERROR PROGRAM $ERSTK EQU X'30' TO BE MOVED TO $ERRPG IF A STACK * * OF ERR CODES IS TO BE PROCESSED $ERSFL EQU X'35' SYNTAX CHECKERS $ERRPG SETTING $ERFIL EQU X'40' TO BE MOVED TO $ERRPG IF FILE * * LINE ERROR OCCURS $ER1N2 EQU X'50' TO BE MOVED TO $ERRPG IF LEVEL * * 1 AND 2 MESSAGES REQUIRED $ERKEY EQU X'80' STANDARD ERROR SETTING USED BY * * COMMAND ANALYZER ONLY $ERRCT EQU $INLNO ADDR OF COUNT BYTE FOR STACK * * OF ERROR MESSAGES EJECT ********************************************************************** * SYSTEM STATUS EQUATES * ********************************************************************** * $XIND1 EQU $INLNO+1 ADDR OF PRIMARY EXEC MODE INDRS * * ENTRIES FOLLOW $RUNIT EQU X'01' 1 - EXECUTE IN RUN MODE $STEPT EQU X'02' 1 - EXECUTE IN STEP MODE $TRACE EQU X'04' 1 - EXECUTE IN TRACE MODE * THE THREE MODE INDICATORS ARE * MUTUALLY EXCLUSIVE. IF $TRACE * IS ON, AT LEAST 1 OF THE TRACE * TYPE CODE MUST ALSO BE ON. $TFLOW EQU X'08' 1 - TRACE FLOW $TRALL EQU X'10' 1 - TRACE ALL $TRVAR EQU X'20' 1 - TRACE SELECTED VARIABLES $XPREC EQU X'40' EXECUTION PRECISION INDR * * 0 - SHORT PRECISION * * 1 - LONG PRECISION $VMDEF EQU X'80' VM USAGE INDR * * 1 - VIRTUAL MEMORY NOT EMPTY * * 0 - VIRTUAL MEMORY EMPTY SPACE 1 $XIND2 EQU $XIND1+1 ADDR OF EXECUTION INDICATORS * * MASK AND INDRS FOLLOW $EXCMD EQU X'01' EXECUTION INDR * * 1 - IN EXECUTION $PAUSE EQU X'02' * 1 - PROGRAM IN PAUSE STATE $PSTEP EQU X'04' * 1 - PAUSE CAUSED BY STEP MODE $PSTMT EQU X'08' * 1 - PAUSE CAUSED BY PAUSE STMT $ABORT EQU X'10' * 1 - ABORT EXECUTION SPACE 1 $IOIND EQU $XIND2+1 I/O STATUS INDICATORS * * MASKS AND EXPLANATION FOLLOW $MPDWN EQU X'01' MP STATE * * 0 - MATRIX PRINTER OPERATIONAL * * 1 - MATRIX PRINTER DOWN $CRTAV EQU X'02' CRT AVAILABILITY * * 0 - NO CRT ON SYSTEM * * 1 - CRT ON THE SYSTEM $CRTNO EQU X'04' SYSPRNT ON CRT * * 0 - CRT NOT AVAIL FOR SYSPRNT * * 1 - CRT MAY BE USED FOR SYSPRNT $CMDKY EQU X'08' KEYBOARD MODE * * 0 - NORMAL KEYBOARD INPUT * * 1 - COMMAND KEYS USE ONLY $PGMST EQU X'10' PGM START KEY * * 0 - MAY BE USED FOR AUTO LINE # * * 1 - NOT USED FOR AUTO LINE # $HRDER EQU X'20' HARD ERROR INDICATOR * * 0 - SOFT ERROR * * 1 - HARD ERROR $DTRDR EQU X'40' DATA RECORDER * * 0 - DATA RECORDER NOT ON SYSTEM * * 1 - DATA RECORDER IS ON SYSTEM $LNPTR EQU X'80' MP OPTION * * 1 - 50 LPM OPTION AVAILABLE SPACE 1 $CRTIN EQU $IOIND+1 CRT COMMAND INDICATORS * * MASKS AND EXPLANATION FOLLOW $CRTUP EQU X'01' 1 - CRT IN ROLL UP MODE $CRTDN EQU X'02' 1 - CRT IN ROLL DOWN MODE $CRTPU EQU X'04' 1 - POP UP CONDITION REQUESTED $CRTSP EQU X'08' 1 - ROLL STOP REQUESTED SPACE 1 $INDR1 EQU $CRTIN+1 WORK FILE STATUS INDICATORS * * MASKS AND EXPLANATION FOLLOW $PROCI EQU X'01' PROCEDURE FILE INDR * * 0 - NOT A PROCEDURE * * 1 - A PROCEDURE $PRESN EQU X'02' WORK FILE PRECISION INDR * * 0 - SHORT PRECISION USED * * 1 - LONG PRECISION BEING USED $WSIND EQU X'04' WORKING STORAGE INDR MASK * * 0 - WORKING STOR ON DISK IS EMPTY * * 1 - WORKING STORAGE IS NOT EMPTY $WFLOK EQU X'08' WORK FILE LOCK INDR * * 0 - FILE NOT PROTECTED * * 1 - FILE PROTECTED $FITIN EQU X'10' FIT SECTORS INDR MASK * * 0 - FIT SECTORS NOT PRESENT * * 1 - FIT SECTORS IN CORE $PGMDT EQU X'20' PGM DATA FILE INDR * * 1 - PROGRAM GENERATED * * DATA FILE IN WORK FILE $KEYDT EQU X'40' KEYBOARD OR CARD FILE INDR * * 1 - KYBRD OR CARD GENERATED * * DATA FILE IN WORK FILE $BASIC EQU X'80' BASIC PROGRAM INDR * * 1 - BASIC PGM IN WORK FILE SPACE 1 $INDR2 EQU $INDR1+1 ADDR OF SYSTEM 1-BIT INDRS * * MASKS AND EXPLANATION FOLLOW $CMODE EQU X'02' CONVERSATIONAL MODE INDR MASK * * 0 - UTILITY MODE * * 1 - CONVERSATIONAL MODE $ERPND EQU X'04' ERROR LOG PENDING INDR * * 0 - NO LOGGING REQUIRED * * 1 - ERROR LOGGING PENDING $DKERR EQU X'08' DISK ERROR INDR * * 0 - ERROR WAS NOT DISK * * 1 - ERROR WAS DISK, 2 ENTRIES * * REQUIRED IN HISTORY LOG $FCIND EQU X'10' CRUSH INDR MASK * * 1 - SINGLE LINE NO DELETION * * THROUGH THE CMD ANALYZER REQ. * * IF $FUIND, $FCIND AND $FDIND ARE * * ALL ZERO, CRUCHING OP REQUIRED. $FUIND EQU X'20' LINE PASSED INDR MASK * * 1 - LINE PASSED $FDIND EQU X'40' LINE NUMBER LIST * * 1 - LINE NO LIST IS DELETED $READY EQU X'80' PRINT READY INDR * * 0 - READY WILL BE PRINTED * * 1 - READY WON'T BE PRINTED SPACE 1 $INDR3 EQU $INDR2+1 ADDR OF SYSTEM 1-BIT INDRS * * MASKS AND EXPLANATION FOLLOW $DBLOK EQU X'01' SAVE PROTECTED WORK FILE MASK * * 1 - FILE MAY BE SAVED TO $$LIBR $LIST EQU X'02' KLISTN INDR * * 0 - IGNORE ROLL DOWN KEY * * 1 - EXCEPT ROLL DOWN KEY $ERHRD EQU X'04' ERRPGM HARD ERROR INDR * * 1 - ERRPGM WILL EXECUTE HARD * * HALT AFTER PRINTING MSG $NOENB EQU X'08' KEYBOARD ENABLE INDR * * 0 - KEYBOARD NOT ENABLED - * * GUFUDI WILL ENABLE * * 1 - KEYBOARD HAS ALREADY * * BEEN ENABLED $CLBFR EQU X'10' CLEAR INPUT LINE BUFFER INDR * * 0 - DON'T CLEAR LINE BUFFER * * 1 - CLEAR THE INPUT LINE BUFF $MOUNT EQU X'20' MOUNT KEYBOARD INDR MASK * * 1 - ONLY MOUNT COMMAND VALID $NWRKR EQU X'40' REMOVABLE DISK WORK AREA INDR * * 0 - CORRECT WORK AREA ON R1 * * 1 - NO WORK AREA ON R1 $NWRKF EQU X'80' FIXED DISK WORK AREA INDR * * 0 - CORRECT WORK AREA ON F1 * * 1 - NO WORK AREA ON F1 SPACE 1 $DKSIZ EQU $INDR3+1 ADDR OF DISK SIZE INDR * * MASKS AND EXPLANATION FOLLOW $DK100 EQU X'01' 1 - SYSTEM HAS 100 CYLS $DK200 EQU X'02' 1 - SYSTEM HAS 200 CYLS $DK400 EQU X'04' 1 - SYSTEM HAS 400 CYLS $DK600 EQU X'08' 1 - SYSTEM HAS 600 CYLS $DK800 EQU X'10' 1 - SYSTEM HAS 800 CYLS SPACE 1 $XIND3 EQU $DKSIZ+1 PAST $XIND1 * * SEE $XIND1 FOR INDR MASKS SPACE 1 $FILIB EQU $XIND3+2 ADDR OF CURRENT FILE LIB DADDR $USRDR EQU $FILIB+2 ADDR OF REL DISP TO 1ST USER BK $CONFG EQU $USRDR+1 CONFIGURATION INDRS $22IMP EQU X'01' 0 - 13 INCH MATRIX PRINTER * 1 - 22 INCH MATRIX PRINTER $16K EQU X'02' 1 - CPU HAS 12 KBYTE $12K EQU X'04' 1 - CPU HAS 16 KBYTE * * IF BOTH OFF: CPU HAS 8 KBYTE $16CKY EQU X'08' 0 - KEYBOARD HAS 8 CMD KEYS * 1 - KEYBOARD HAS 16 CMD KEYS $BIGCD EQU X'80' 1 - CPU HAS 129 DATA RECORDER SPACE 1 $LEVEL EQU $CONFG+2 ADDR OF SYSTEM LEVEL NUMBER SPACE 1 $DBGUF EQU $LEVEL+1 ADDR OF GUFUDI DEBUG INDR $CRUSH EQU X'80' 0 - CRUSH THE FILE $REORD EQU X'40' 0 - REORDER THE FILE $IRKEY EQU X'20' 1 - ENABLE KEYBOARD INPUT $IOPGS EQU X'10' D1 PAGES INDR: 0 - ONE $CALLI EQU X'08' PROCEDURE CALL INDR * * 0 - NOT A CALL * * 1 - A CALL SPACE 1 $KEYBD EQU $DBGUF+1 KEYBOARD TYPE INDR * * THIS VALUE WILL BE A BINARY * * VALUE FROM 1 TO 12 INDICATING * * WHICH DATA TABLE IS IN USE SPACE 1 $CRPOS EQU $KEYBD+1 ADDR OF CURRENT CURSOR POSITION $BUFPT EQU $CRPOS+1 LINE PRINTER BUFFER POINTER 1-3 $LPRP3 EQU $BUFPT+1 LINE PRINTER FLAGS 1-3 $LPROS EQU $LPRP3+1 TRUE LINE PRINTER PRINT POS. 1-3 SPACE 1 $NEXTB EQU $LPROS+1 REL DADDR PROCEDURE CALL 1-4 $NEXTL EQU $NEXTB+1 DISPLACEMENT WITHIN DB 1-4 $DFDET EQU $NEXTL+1 GRAPRO INTERNAL INDR 1-4 $LPRIO EQU $DFDET+2 LINE PRINTER BUF INC. + PDAR 1-4 SPACE 1 $PTCH1 EQU $DKSIZ+30 LAST BYTE OF NUCLUES AREA *********************************************************************** * TABLES AND SYSTEM WORK AREAS * *********************************************************************** $VOLID EQU $PTCH1+1 ADDR OF LEFT BYTE VOLID TABLE $VOLR1 EQU $VOLID ADDR LEFT BYTE VOLID FOR R1 $VOLF1 EQU $VOLR1+8 ADDR LEFT BYTE VOLID FOR F1 $VOLR2 EQU $VOLF1+8 ADDR LEFT BYTE VOLID FOR R2 $VOLF2 EQU $VOLR2+8 ADDR LEFT BYTE VOLID FOR F2 $PKERT EQU $VOLID+35 ADDR OF 1ST ENTRY IN PACK ERROR * * RATE TABLE $PASWD EQU $PKERT+20 ADDR OF CURRENT PASSWORD $HISTE EQU $PASWD+1 LEFT BYTE OF HISTORY LOG ENTRY $HIST1 EQU $HISTE+7 ADDR OF 1ST ENTRY OF HIST LOG $DATE EQU $HIST1+5 ADDR OF CURRENT DATE $EXFTR EQU $DATE+1 ADDR OF CORE EXPANSION FACTOR * * THIS VALUE WILL BE ADDED TO * * BUFFER ADDRESS (SET FOR 8K) * * TO RE-POSITION THEM FOR * * LARGER MACHINES $WFNME EQU $EXFTR+8 ADDR OF WORK FILE NAME $WFDEF EQU X'40' WORK FILE DEFINED INDR * * THIS MASK IS USED ON $WFNME * * 0 - WORK FILE UNDEFINED * * 1 - WORK FILE DEFINED $DPLSV EQU $WFNME+6 ADDR OF 6 BYTE DPL SAVE AREA * * FOR KEYBOARD PROGRAMS $PRDEV EQU $DPLSV+2 ADDR OF 2 BYTE FIELD POINTING * * TO THE SYSTEM PRINTER IOCR $CRTAD EQU $PRDEV+2 ADDR OF ENTRY TO RELOCATE CRT $PLST1 EQU $CRTAD+7 ADDR OF THREE 7-BYTES ENTRY I/O $PLST2 EQU $PLST1+7 * PARM LISTS MOST RECENTLY USED $PLST3 EQU $PLST2+7 * THE 1ST ENTRY IS MOST RECENT $C0001 EQU $PLST3+2 ADDR OF 2 BYTE CONSTANT 1 EJECT ********************************************************************** * ENTRY POINTS TO INTERFACE ROUTINES AND THEIR WORK AREAS * ********************************************************************** SPACE 1 $SPRNT EQU $C0001+1 ADDR OF ENTRY TO THE SYSTEM * * PRINTER IOCR $CAERK EQU $SPRNT+4 ADDR OF ENTRY TO ERR ROUTINE * * INTERFACE. ERROR CODE MUST * * BE STORED PREVIOUS TO ENTRY $ERDPL EQU $CAERK+6 ADDR OF LEFT BYTE OF ERRPGM * * LOAD DPL $ERMAD EQU $ERDPL+3 ADDR OF DK ADDR, CNT OF ERRPGM $CIMSK EQU $ERMAD+4 ADDR OF THE INQUIRY REQUEST INDR * * X'87' IR NOT DISABLED * * X'80' IR MASKED $CIEXT EQU $CIMSK+10 ADDR OF IR EXIT INSTRUCTION $CIENT EQU $CIEXT+3 ADDR OF ENTRY FOR IR $UNMSK EQU $CIENT+10 ADDR OF ENTRY TO UNMASK IR * * IF NO SUSPENDED IR, CALLING * * PROGRAM RETURNED TO $CISUS EQU $UNMSK+9 ADDR OF INDR FOR SUSPENDED IR * * IF X'80' AN IR OCCURRED WHILE * * IR WAS MASKED * * IF X'87' NO IR TOOK PLACE * * WHILE IR WAS MASKED $CAIPL EQU $CISUS+7 ADDR OF ENTRY TO ABORT CURRENT * * OP AND RE-ENABLE KEYBOARD AND IR $CARPL EQU $CAIPL+4 ADDR OF ENTRY TO ABORT CURRENT * * OP AND ENABLE IR $CABLD EQU $CARPL+X'13' ADDR OF ENTRY TO ABORT CURRENT OP $PAUSD EQU $CABLD+6 ADDR OF ENTRY OF ROUTINE TO * * SWAP CORE $RSTR EQU $PAUSD+X'1C' ADDR OF ENTRY TO ENTRY CORE * * FROM DISK $PSDXR EQU $RSTR+X'1C' ADDR OF SAVED XR IN NPAUSE $PSDBR EQU $PSDXR+8 ADDR OF SAVED BR IN NPAUSE $SRTRN EQU $RSTR+X'28' ADDR OF RETURN ADDR FROM $PAUSD $SFAID EQU $SRTRN+15 ADDR OF RETURN IF FE AID REQUEST * * IF THE ABOVE TWO ADDRESSES ARE * * EQUAL, RETURN TO $RSTR WILL BE * * BE FROM THE FE AID PROGRAM $CSDPL EQU $RSTR+X'38' ADDR OF LEFT BYTE OF SAVE/RSTR DPL $SWPCR EQU $CSDPL+3 ADDR OF DKADDR, COUNT FOR CORE * * SAVE AREA $EXADR EQU $SWPCR+6 ADDRR OF DK ADDR, COUNT OF EXEC * * TIME MESSAGE PROGRAM $LOADR EQU $EXADR+3 ADDR OF ENTRY TO BLAST LOAD * * PROGRAM NOT RESIDING ON CYL 4 * * RETURN IS TO CALLING PROGRAM $RLOAD EQU $LOADR+4 ADDR OF ENTRY TO BLAST LOAD * * PROGRAM NOT RESIDING ON CYL 4 $BLOAD EQU $RLOAD+4 ADDR OF ENTRY TO BLAST LOAD * * PROGRAM RESIDING ON CYL 4 $LOADB EQU $BLOAD+X'28' ADDR OF SPECIAL ENTRY TO * * NBLOAD FOR SFLOAD/SFFIND * * AND FZPINV $TROVR EQU $BLOAD+X'2C' ADDR OF FE TRACE INDR * * @NOP - NO TRACE PERFORMED * * @UCB - TRACE PERFORMED $BLRTN EQU $TROVR+2 ADDR OF RETURN POINT FROM ZTRACE $BLNOE EQU $BLRTN+X'19' ADDR OF NO EXECUTE INDR-NBLOAD * * @NOP - CALLING PGM RETURNED TO * * @UCB - LOADED PROGRAM EXECUTED * * ENTRY TO $LOADR SETS THE ABOVE * * INDR TO @NOP. IF THE CALLING PGM * * SETS THE INDR TO @NOP BEFORE * * CALLING $BLOAD, RETURN WILL BE * * MADE UPON COMPLETION OF THE * * ABSOLUE LOAD $LDRTN EQU $BLOAD+X'4F' ADDR OF THE RETURN ADDR IN NBLOAD $BLDPL EQU $BLOAD+X'57' ADDR OF LEFT BYTE OF $BLOAD'S * * DPL (DPL OF LAST PGM LOADED) $WAITF EQU $BLDPL+6 ADDR OF LEFT BYTE OF DISK * * WAIT AND CHECK ERRORS DPL $GUFIO EQU $WAITF+4 ADDR OF DK ADDR, COUNT OF GUFUDI $BSADR EQU $GUFIO+4 ADDR OF DADDR RELOCATION FACTOR * * FOR PGMS NOT RESIDING ON CYL 6 $FEMAP EQU $BSADR+1 ADDR OF START OF CORE MAP $ZTRAD EQU $FEMAP+X'1A' ADDR OF ZTRACE DADDR SPACE 1 ORG X'05FF' $IPLDV EQU * ADDR OF IPL INDR * * X'00' - IPL WAS FROM R1 * * X'01' - IPL WAS FROM F1 $ENDNU EQU $IPLDV+1 ADDR OF THE FIRST BYTE * * FOLLOWING SYSNUC * END OF FIXED ADDRESSES SYSTEM NUCLEUS EQUATES .* END OF MACRO; RESTORE PRINT ON. .MEND ANOP PRINT ON MEND // CEND // END * // READER CONSOLE