ASMB,Q,R,C HED RT4G3 - LOADING CONTROL SEGMENT NAM RT4G3,5,90 92067-16318 REV.2001 790817 SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 2 SPC 1 ****************************************************************** * * NAME: RT4G3 * SOURCE PART #: 92067-18318 * REL PART #: 92067-16318 * WRITTEN BY: JJC, KFH, JH, GAA * ****************************************************************** SPC 1 * * ENTRY POINT NAMES * ENT \GENS * * EXTERNAL REFERENCE NAMES * EXT \PART * EXT \EXIT,\CLDP EXT \LODN,\GNIO,\FSEC,\SYTB EXT \CURL,\CPL2 EXT \TBCH,\PIOC,\SWPF,\LBUF,\TBUF EXT \CONV,\ABDO,\DSKA,\DSKO,\DSKI EXT \OCTN,\ADSK,\PTYP,\TMSK EXT \GET#,\GETC,\SPAC,\READ,\GNER,\MESS,\ABOR EXT \ADBP,\PREL,\NUMP EXT \ILST,\LSTX,\LSTS EXT \LST3,\LST4,\LST5 EXT \INID,\IDX,\TIDN,\IDXS EXT \ID1,\ID2,\ID3,\ID4,\ID5,\ID6,\ID8 EXT \TBLK,\MRT2 EXT \LRBP,\URBP,\IRBP EXT \CUBP,\UCBP,\ICBP,\CBPA EXT \LNK,\LNKS EXT \LNK1,\LNK2,\LNK3 EXT \SEGS,\SYS,\USRS,\USER,\DSYS EXT \SRET,\PFIX,\TFIX,\ADBF,\OLDA EXT \TRUN EXT \IRER,\TERM EXT \ABCO,\MXAB,\TIME,\TIM1,\MULR EXT \CPLB,\ASKY,\SSID,\SKYA EXT \INER EXT \SCTK,\IBI * * * A EQU 0 B EQU 1 SUP ************************************************************************ * SKP *************************************************************************** * * 770913 * * THE FOLLOWING BLOCK OF STORAGE FOR VARIABLES PRECEEDS, * AND IS REFERENCED BY, EACH SEGMENT. IT IS NOT OVERLAID * AS EACH NEW SEGMENT IS LOADED INTO MEMORY. * * THE LOCATION OF EACH VARIABLE MUST BE THE SAME IN ALL * SEGMENTS. IF A CHANGE IS MADE, MAKE THE SAME CHANGES * IN THE REST OF THE SEGMENTS. * *************************************************************************** * * TB30 BSS 160 TRACK MAP TABLE/HEADER RECORD BUFFER * ILIST BSS 64 USER SYSTEM PROG IDENT ADDR LIST CURIL BSS 1 CURRENT ILIST ADDRESS * SYSCH BSS 1 SUBCHANNEL OF SYSTEM UNIT. DCHNL BSS 1 CHANNEL OF SYSTEM DISK UNIT AUXCH BSS 1 SUBCHANNEL OF AUX UNIT. DSIZE BSS 1 DISK SIZE -NO. OF TRACKS. #SUBC BSS 1 # DISC SUBCHANNELS DEF'D (7905/7920) DAUXN BSS 1 AUXILIARY DISK SIZE. ADS# BSS 1 AUX DISC SECTORS/TRACK. * * RELOCATION BASE TABLE. RBTA BSS 1 ABSOLUTE PROGRAM BASE. TPREL BSS 1 CURRENT PROGRAM BASE ADDRESS. TPBRE BSS 1 BASE PAGE RELOCATION ADDRESS. COMAD BSS 1 CURRENT COMMON RELOCATION BASE. BSS 1 ABS PROGRAM BASE FOR MR CODE. * WDCNT BSS 1 TEMPORARY WORD COUNTER. DSKSY BSS 1 INITIAL ID SEGMENT DISK ADDRESS IDSP BSS 1 POSITION OF 1ST ID SEG. IN SECT TTYCH BSS 1 SYSTEM TTY CHANNEL NO. * PLFLG BSS 1 PROGRAM LOAD. FLAG = -1/0 = L/NL DSCNT BSS 1 DISK SEGMENT SECTOR COUNT * NXFLG BSS 1 ENT/EXT FLAG = -1/0 EXCNT BSS 1 SYMBOL COUNTER * LCNT BSS 1 CURRENT \LBUF COUNT DCNT BSS 1 CURRENT DBUF COUNT CURAI BSS 1 CURRENT IBUF COUNT * CPLS BSS 1 ADDRESS OF TOP OF FIXED CP LINK IMAGE CPL1 BSS 1 ADDRESS OF LOW CURRENT PAGE LINK SPECS. CPL1H BSS 1 NUMBER OF CURRENT PAGE LINKS ASSIGNED CPL2H BSS 1 IN LOW AND HIGH AREA RESPECTIVELY URBP1 BSS 1 LWA R/T DISC RES BP LINK AREA CURAK BSS 1 CURRENT KBUF ADDRESS * CURAT BSS 1 CURRENT \TBUF ADDRESS TCNT BSS 1 CURRENT \TBUF COUNT * CURAP BSS 1 CURRENT PLIST ADDRESS * AMAD BSS 1 CURRENT MLIST ADDRESS * IXCNT BSS 1 ID EXTENSION COUNT IDEXC BSS 1 CURRENT ID EXT'S USED IDEX BSS 1 ADDRESS OF ID EXTENSION TABLE * LICNT BSS 1 LONG ID SEGMENT COUNT SSCNT BSS 1 BG. SEG ID COUNT * DSKID BSS 1 DISK ID SEGMENT ADDRESS KEYCN BSS 1 TOTAL KEYWORD COUNT KEYCT BSS 1 CURRENT KEYWORD COUNT * MLIST BSS 11 MEMORY MAP BUFFER * TEMP1 BSS 1 TEMP2 BSS 1 LWH1 BSS 1 LWH2 BSS 1 LWH3 BSS 1 LWH4 BSS 1 L01 BSS 1 * FSYBP BSS 1 FIRST WORD SYS BP LINKAGE SYSAD BSS 1 CURRENT ID SEGMENT ADDRESS * TBREL BSS 1 CURRENT BP RELOC ADDR PBREL BSS 1 INITIAL BP RELOC ADDR * RELAD BSS 1 CURRENT CORE RELOCATION ADDRESS * BSBAD BSS 1 BG SEGMENT BP RELOC ADDR BSPAD BSS 1 BG SEGMENT PROG RELOC ADDR * LFLAG BSS 1 PROGRAMS-LOADED FLAG IMAIN BSS 1 CURRENT MAIN IDENT INDEX. HDFLG BSS 1 HEADING FORMAT FLAG CIDNT BSS 1 CURRENT MAIN IDENT INDEX. * AEQT BSS 1 ADDRESS OF EQUIPMENT TABLE CEQT BSS 1 NO. ENTRIES IN EQUIPMENT TABLE SPLCO BSS 1 SPOOL EQT COUNT DVMAP BSS 1 ADDRESS OF DRIVER MAP TABLE * DPFLG BSS 1 DP RELOCATION FLAG, 0=YES, -1=NO DPLN BSS 1 PAGE LENGTH OF DRIVER PARTITION DPADD BSS 1 START ADDR OF DRIVER PARTITION DSKDP BSS 1 DISK ADDRESS OF DP #2 PAGE# BSS 1 NEXT PHYSICAL PAGE TO ALLOCATE DPNUM BSS 1 CURRENT DP# -1, OR TOT DP PAGES SDID BSS 1 IDENT IDEX OF SYS DISK DRIVER LWDP1 BSS 1 LAST WORD OF DP, +1 FWSDA BSS 1 FIRST WORD OF SDA * ASQT BSS 1 ADDR OF DEVICE REFERENCE TABLE CSQT BSS 1 NO. ENTRIES IN DEV. REF. TABLE * AINT BSS 1 ADDRESS OF INTERRUPT TABLE * DSKIN BSS 1 DISK ADDR OF INT CODE RECORD INTCN BSS 1 RECORD COUNT OF INT CODE * IDSAV BSS 1 INDEX OF CURRENT IDENT. DSKMN BSS 1 INITIAL MAIN DISK ADDRESS BSSDP BSS 1 INITIAL DISK RES MAIN BSS DISP PRENT BSS 1 PRIMARY ENTRY POINT DBLAD BSS 1 CURRENT DBL ADDRESS REKEY BSS 1 INSTRUCTION TYPE BYTE INSCN BSS 1 INSTRUCTION TYPE COUNTER INSTR BSS 1 CURRENT INSTRUCTION PAGNO BSS 1 CURRENT PAGE NO. OPRND BSS 1 CURRENT OPERAND PLGTH BSS 1 PROGRAM LENGTH * DRT2 BSS 1 DISK DRT ENTRY ( SYSTEM) DRT3 BSS 1 AUX DISK DRT ENTRY * LIBFG BSS 1 LDTYP BSS 1 * SCH1 BSS 1 INDEX OF IDENT OF PGM TO BE SCHEDULED SCH3 BSS 1 ADDRESS OF CURRENT ID SEGMENT SCH4 BSS 1 ADDRESS OF THE SCHEDULED PGM ID SEG FGBGC BSS 1 BACKGROUND USING FG COMMON FLAG $LIBR BSS 1 INDEX OF $LIBR ENT $LIBX BSS 1 INDEX OF $LIBX ENT CUPRI BSS 1 * BLLO BSS 1 -(LOWER BUFFER LIMIT) BLHI BSS 1 -(UPPER BUFFER LIMIT) * MEM6 BSS 1 MEM12 BSS 1 * COMRT BSS 1 MAXIMUM RT COM LENGTH COMBG BSS 1 MAXIMUM BG COM LENGTH COMSZ BSS 1 #WORDS COMMON DECLARED IN CURRENT MAIN RTCAD BSS 1 RT COMMON ADDRESS BGCAD BSS 1 BG COMMON ADDRESS FPCOM BSS 1 FIRST PAGE OCCUPIED BY COMMON LPCOM BSS 1 LAST PAGE CONTAINING ANY COMMON * FPSAM BSS 1 1ST PAGE CONTAINING S.A.M. FWSAM BSS 1 1ST WORD CONTAINING S.A.M. SYMAD BSS 1 VALUE FOR AVMEM IN SCOM SAM#1 BSS 1 SIZE OF FIRST CHUNK OF SAM SAM#2 BSS 1 SIZE OF SECOND CHUNK OF SAM SAM2P BSS 1 START PAGE OF SAM #2 LWTAI BSS 1 LAST WORD OF TABLE AREA I FOR SAM#0 FWPRV BSS 1 FIRST WORD FOR PRIVILEGED PROGRAMS * FWSYS BSS 1 FIRST WORD OF SYSTEM CODE LPSYS BSS 1 LAST PAGE CONTAINING SYS LWSYS BSS 1 LAST WORD OF SYSTEM LPSLB BSS 1 LAST PAGE OF SLOW BOOT LWSLB BSS 1 LAST WORD OF SLOW BOOT MTYPE BSS 1 MAIN PROGRAMS'S TYPE * HIBP BSS 1 BP LINK MODE FOR FIXUP ENTRIES LOLNK BSS 1 LOW LINK FOR SSGA,LIB, OR SYS HILNK BSS 1 HI LINK USED BY MEM RES PRG BPINC BSS 1 BP LINK ALLOCATION MODE, -1=DOWN,1=UP BPLMT BSS 1 LAST AVAIL BP LINK IN CURRENT MODE, +1 * TPMAX BSS 1 HWM FOR RELOCATION OF BG MAINS & SEGS MAXPT BSS 1 NUM PARTS. ALLOWED MAT. BSS 1 ADDRESS OF MEMORY ALLOCATION TABLE * SSGA. BSS 1 FWA SSGA MAP. BSS 1 PTR TO MEU RES MAP MPFT. BSS 1 PTR TO MPFT * EMLNK BSS 1 EMA SYMBOL'S LINK EMLST BSS 1 LST INDEX OF EMA SYMBOL EMDSK BSS 1 DISK ADDR OF EMA PROGRAM * * MEMORY RESIDENT AREA POINTERS * MRACM BSS 1 MR ACCESS COMMON FLAG (>0 IF YES) LBCAD BSS 1 FIRST WORD OF MEMORY RES LIBRARY LEND BSS 1 LAST WORD OF MEMORY RES LIBRARY FWMRP BSS 1 FIRST WORD OF MEMORY RES PROGRAM AREA EMRP BSS 1 LAST WORD OF MEMORY RES PROGRAM AREA FPMRP BSS 1 FIRST PAGE OF MEMORY RES PROGRAM AREA FPMBP BSS 1 PAGE # FOR MEMORY RES BASE PAGE MRP# BSS 1 # PAGES OCCUPIED BY MRL & MRP'S DSKMB BSS 1 DISK ADDRESS OF MEMORY RES BASE PAGE DSKMR BSS 1 DISK ADDRESS OF MEMORY RESIDENT LIB/PROG AREA DSKBP BSS 1 SYSTEM DISK ADDRESS * DSKAV BSS 1 NEXT AVAILABLE DISK ADDRESS DSKLC BSS 1 DISK ADDRESS OF LIBRARY CODE DSKLB BSS 1 DISK ADDR OF LIBRARY ENTRY PTS DSKUT BSS 1 UTILITY PROG DISK ADDRESS DSKBS BSS 1 DISK ADDR OF MAIN BG DISK RES BP DSKBR BSS 1 CURRENT MAIN BG DISK RES DISK AD ADICT BSS 1 ADDR OF DISK DICTIONARY LBCNT BSS 1 RESIDENT LIBR ENTRY PT COUNT SYCNT BSS 1 SYSTEM ENTRY POINT COUNT KEYAD BSS 1 CURRENT KEYWORD ADDRESS * SYBAD BSS 1 ADDR OF FIRST BP LINK FOR BG IDSAD BSS 1 ADDR OF FIRST ID SEGMENT ABSID BSS 1 IDENT ADDR FOR NEXT BG SEG SCAN IDMBS BSS 1 BG MAIN ADDRESS FOR BS REF * SYTRK BSS 1 DISK ADDR WHERE SYSTEM BEGINS - TRACK SYSEC BSS 1 DISK ADDR WHERE SYSTEM BEGINS - SECTOR * SSGAF BSS 1 SSGA ACCESS FLAG SPAR2 BSS 1 SPARE VARIABLE SPAR3 BSS 1 SPARE VARIABLE SPAR4 BSS 1 SPARE VARIABLE SPAR5 BSS 1 SPARE VARIABLE * ********************************************************* * * * END OF COMMON STORAGE BLOCK FOR ALL SEGMENTS. * * * ********************************************************* * SPC 4 AILST DEF ILIST SKP * NOTE THE FOLLOWING RESOLVES ARITHMETIC DEF'S TO EXTERNALS * LABS CCA GET LOOP COUNTER STA TEMP1 SAVE LDB LSTAA GET ADDRESS OF LIST LOOP LDA B,I GET ADDRESS RSS LDA A,I RAL,CLE,SLA,ERA JMP *-2 STA B,I AND SAVE IT AGAIN INB ISZ TEMP1 JMP LOOP JMP \SRET RETURN TO MAIN * * LSTAA DEF *+1 ATBUF DEF \TBUF+0 SKP * PROGRAM CONSTANT FACTORS N1 DEC -1 N2 DEC -2 N5 DEC -5 N7 DEC -7 P6 DEC 6 P7 DEC 7 P9 DEC 9 P10 DEC 10 P13 DEC 13 P15 DEC 15 P17 DEC 17 P18 DEC 18 P20 DEC 20 P22 DEC 22 P24 DEC 24 P28 DEC 28 P30 DEC 30 P31 DEC 31 P34 DEC 34 P36 DEC 36 P38 DEC 38 P40 DEC 40 P46 DEC 46 P48 DEC 48 L2000 OCT -2000 M7 EQU P7 M37 EQU P31 M77 OCT 77 M177 OCT 177 M200B OCT 200 M777 OCT 777 M1000 OCT 1000 M1777 OCT 1777 M2000 OCT 2000 M1377 OCT 137777 M7777 OCT 77777 M3777 OCT 37777 M7400 OCT 177400 M7737 OCT 77377 * LWASM EQU M7777 LWSBP OCT 1645 * HLT0 HLT 0B MSIGN OCT 100000 UBLNK OCT 20000 D$STR DEF *+1 ASC 3,$STRT SKP * * LOAD ABSOLUTE SYSTEM * * THIS SEGMENT CONTROLS THE GENERATION OF * THE ABSOLUTE CODE FOR THE SYSTEM. EACH PROGRAM * IS LOADED BY TYPE AS FOLLOWS: * * (1) TABLE AREA I * (2) SSGA & COMMON * (3) SYSTEM DRIVER AREA * (4) TABLE AREA II * (5) SYSTEM * (6) PARTITION DRIVERS * (7) RESIDENT LIBRARY * (8) MEMORY RESIDENTS * (9) RT DISK RESIDENTS * (10) PR DISK RESIDENTS (AND BG SEGMENTS) * (11) BG DISK RESIDENTS (AND BG SEGMENTS) * * EACH TYPE OF PROGRAM IS LOADED IN THE FOLLOWING MANNER: * * THE IDENTIFICATION BLOCK FOR THE PROGRAM IS LOCATED * IN IDENT. A CALL TO LOAD IS EXECUTED TO LOAD THIS PROGRAM AND * ALL CALLED SUBROUTINES. IF THE PROGRAM IS DISK RESIDENT, * THE BASE PAGE SECTION OF CODE IS WRITTEN ON THE DISK * IMMEDIATELY AFTER THE MAIN SECTION OF CODE. IF THE * PROGRAM IS RT DISK RESIDENT, THE BOUNDARIES OF THE LARGEST * SECTION OF BASE PAGE AND PROGRAM ARE SAVED. IF THE PROGRAM IS * A USER PROGRAM (OTHER THAN SYSTEM USER PROGRAM) AN ID SEGMENT IS * GENERATED. * SKP * * INITIALIZATION * \GENS LDB P64 GET FWA BP STB FSYBP SET ADDR OF FIRST SYS LINK JSB \SPAC NEW LINE * * CLEAR LST WORD 5 (SYMBOL VALUE) * JSB \ILST INITIALIZE LST ADDRESSES CLLST JSB \LSTX SET LST ADDRESSES JMP CLRID-1 CLEAR USAGE FLAGS CLA LDB \LST4,I GET TYPE ADB N7 IF SELF SSB,RSS DEFINING SKIP CLEAR STA \LST5,I CLEAR \LST WORD 5 LDA \LST3,I GET WORD 3 OF \LST ENTRY AND M7400 ISOLATE UPPER CHARACTER STA \LST3,I SET \LST WORD 3 WITH NO ORDINAL JMP CLLST CONTINUE CLEARING LST * * CLEAR PROGRAM USAGE FLAGS * JSB \INID INITIALIZE IDENT ADDRESSES CLRID JSB \IDX SET IDENT ADDRESSES JMP IDCLR ALL IDENT FLAGS CLEAR LDA \ID3,I GET USAGE FLAG AND M7400 SET FLAG = ZERO STA \ID3,I SET CLEARED USAGE FLAG JMP CLRID CLEAR NEXT IDENT FLAG * * CLEAR PAGE 1 FOR INDIRECT LINKS * IDCLR LDA L2000 STA WDCNT SET WORD COUNT = 2000(8) CLA LDB \ADBP GET ADDRESS OF PSEUDO BASE PAGE CLRBP STA B,I CLEAR WORD IN BASE PAGE AREA INB INCR PAGE ADDRESS ISZ WDCNT SKIP - AREA CLEARED JMP CLRBP CONTINUE CLEARING SKP * * LOAD INITIALIZATION * SPC 1 CLA STA RBTA CLEAR THE RELOCATION BASE TABLE STA TPREL STA TPBRE STA COMAD+1 STA RELAD STA \TBLK RESET THE LNKX STARTER STA LIBFG SET "NOT LOADING RES LIB" STA KEYCT STA COMAD RESET COMMON RELOC BASE STA IDSAV STA MTYPE STA DPNUM NO DP'S YET SPC 1 * SET BOUNDS FOR BASE PAGE LINK SCANNING SPC 1 STA \LRBP SHOW NO LINKS IN RESIDENT STA \URBP BASE PAGE AREA SPC 1 STA DSKMB * * SET BP LINK PARAMETERS TO ALLOCATE TOP-DOWN * FROM THE SYSMMM COMMUNICATION AREA. * CCA STA BPINC SET INC = -1 STA DPFLG NOT DP RELOC MODE * ADA LWSBP SET FIRST LINK ADDR TO STA PBREL FIRST WORD BELOW SCOM * LDA FSYBP SET BP LINK ALLOCATION STA BPLMT LIMIT TO LOWEST WORD AVAILABLE SPC 1 STA \CUBP SET CURRENT SCAN AREA TO FIRST LINK ADDR ADA \ADBP AND SET MEMORY ADDR IN RT4GN STA \ICBP IMAGE OF THE AREA * LDA M1000 SET HIGH BASE PAG INDICATOR STA HIBP FOR FIXUP BUILDING SPC 1 LDA LWSBP CURRENT PROGS SCAN AREA ENDS AT STA \UCBP SYSTEM COMM AREA SPC 1 LDA \CBPA MARK CURRENT PAGE LINK STA \CPL2 AREA EMPTY STA CPLS SPC 1 * SET RELOCATION ADDRESSES SPC 1 LDA M2000 STA \PREL SYSTEM RELOC BASE = 2000B CLA STA DSKMR SPC 1 * SET INITIAL DISK ADDRESSES SPC 1 LDA \ADSK GET DISC ADDR AFTER BOOT EXTENSION STA DSKBP & SAVE AS DISC LOCATION OF BASE PAGE SPC 1 * SET UP VALUES FOR LATER SYSTEM ENTRY POINTS SPC 1 AND M177 MASK OFF SECTOR WHERE SYS BEGINS STA SYSEC SAVE IT LDA \ADSK ALF,ALF RAL SHIFT TRACK INTO PLACE AND M777 MASK OFF TRACK WHERE SYS BEGINS STA SYTRK SAVE IT. SPC 1 * STORE BASE PAGE ON DISK, JUST TO SAVE SPACE FOR IT SPC 1 LDA M2000 GET UPPER ADDR+1 CLB AND LOWER ADDRESS JSB BPOUT DUMP A BASE PAGE TO DISK SPC 1 * BUMP TO NEXT EVEN SECTOR SPC 1 JSB DSKEV ALIGN AT EVEN SECTOR STA \DSYS+3 AND SAVE IN \ABDO MAP SPC 1 * SET UP LABDO CONTROL WORDS TO ACCESS SYSTEM AREA OF DISK SPC 1 JSB \SYS SPC 1 * SET PROGRAM TYPE MASK TO LOOK AT WHOLE * TYPE FIELD WHEN SCANNING THROUGH IDENT LIST SPC 1 LDA M177 LOW SEVEN BITS STA \TMSK SKP * * BUILD I/O TABLES * JSB UPAG# UPDATE VAR. PAGE# FOR MESSAGES SPC 1 JSB \GNIO BRING IN SEG 5, GO TO IT SPC 1 * * LOAD TABLE AREA I MODULES * LDA P15 SET MODULE TYPE STA \PTYP LODI JSB IDSCN SCAN IDENTS JMP PSEUD END OF IDENTS LDB \ID3,I GET USAGE FLAG SLB,INB SKIP IF UNLOADED JMP LODI * STB \ID3,I SET WORD 3 WITH USAGE FLAG JSB \LODN INITIATE AND LOAD JSB INCAD UPDATE \PREL AND PBREL JMP LODI PROCESS NEXT TA.I MODULE * PSEUD JSB NOTST TEST FOR PROGRAMS LOADED SPC 1 * * * ASK FOR OVERRIDE OF DRIVER PARTITION SIZE * LDA P16 SET MAX SIZE FOR STA TEMP2 DP LENGTH * CLB LDA P2 ASK IF THEY WANT TO CMA CHANGE THE JSB CHBND SIZE AND DEF MES32 THEN STORE DEF TEMP2 THE STA DPLN NEW SIZE * * LOAD THE SYSTEM DISK DRIVER (PLUS ANY OTHER DRIVERS * THAT WILL FIT) INTO DRIVER PARTITION #1 * CCA SIGNAL \\LDP WHICH DP MODE JSB \CLDP NOW LOAD DP #1 * * LOAD SSGA MODULES * JSB \SPAC MAKE IT LOOK NICE LDA P30 STA \PTYP SET MODULE TYPE LDA FPCOM GET FIRST PAGE COMMON AREA CMA,INA CONVERT TO DEC. PAGE # LDB MS31A AND STUFF IN MESSAGE. JSB \CONV LDA P38 PRINT: SUBSYSTEM GLOBAL AREA <>: LDB MES31 JSB SETHD * SSGAL JSB IDSCN SCAN IDENTS JMP SETCM END OF IDENTS LDA \ID3,I PICK UP LOAD FLAG CLB,INB IOR B SET LOADED BIT STA \ID3,I AND RESTORE JSB \LODN LOAD THE MODULE JSB INCAD UPDATE \PREL AND PBREL JMP SSGAL THEN GO FIND NEXT * SETCM JSB NOTST TEST FOR PROGRAMS LOADED * * * SET UP THE REAL TIME COMMON AREA * JSB \SPAC LDA \PREL COMPUTE MAX SIZE BY STA RTCAD SUBTRACTING CURRENT CMA LOCATION FROM ADA M3777 LAST ALLOWED (APPROX. 37777) STA TEMP2 SAVE AS THE LIMIT * CLB LDA COMRT CMA ASK IF THEN JSB CHBND WANT TO DEF MES53 CHANGE THE SIZE DEF TEMP2 OF RT COMMON STA COMRT SAVE IT * LDA RTCAD LOAD STARTING ADDRESS LDB MES14+1 OF RT COMMON JSB \CONV AND STUFF IN MESSAGE LDA P20 LDB MES14 JSB \MESS AND PRINT IT JSB \SPAC SPC 1 * * SET UP BG COMMON * LDA COMRT SAVE BASE ADA \PREL ADDRESS OF STA BGCAD BG COMMON * ADA COMBG BUMP TO END OF DECLARED ADA N1 IOR M1777 ROUND TO END OF PAGE STA TEMP2 SAVE TEMPORARILY LDB BGCAD GET FWA BG COMMON CMB,INB AND SUBTRACT ADA B IN ORDER TO GET DEFAULTED INA SIZE STA COMBG AND SAVE NEW SIZE * LDB TEMP2 GET LAST WORD ADDRES CMB,INB AND SUBTRACT FROM LAST ADB M3777 ALLOWED ADDRESS STB TEMP2 AND SAVE AS UPPER LIMIT * CMA CLB,INB ASK IF THEY JSB CHBND WANT TO DEF MES57 CHANGE THE DEF TEMP2 SIZE OF BG COMMON * ADA COMBG UPDATE BG COMMON SIZE STA COMBG BY THAT SIZE * LDA BGCAD LOAD STARTING ADDR LDB MES18+1 OF BG COMMON JSB \CONV AND STUFF IN LDA P20 MESSAGE LDB MES18 JSB \MESS PRINT IT * LDA COMBG LOAD NEW SIZE OF BG CMA,INA COMMON AND LDB MES62+1 STUFF IN MESSAGE JSB \CONV (DECIMAL) LDA P16 LDB MES62 JSB \MESS AND PRINT IT JSB \SPAC * * WRITE HALTS ON DISK FOR RT AND BG COMMON AREAS * LDA COMRT GET TOTAL ADA COMBG COMMON SIZE LDB \PREL GET RELOC BASE SZA,RSS JMP NOCOM JUMP IF NO COMMON * CMA,INA SET LOOP COUNTER STA TCNT TO -(LENGTH OF COMMON) WTCOM LDA HLT0 GET HALT 0 VALUE JSB \ABDO WRITE ONE ISZ TCNT HALT AT A TIME JMP WTCOM UNTIL DONE * STB \PREL UPDATE RELOC BASE FOR SDA NOCOM STB FWSDA SAVE START ADDRESS OF SDA * SKP * * LOAD SYSTEM DRIVER AREA * SPC 1 CLA SET TO SCAN FOR STA \PTYP TYPE 0 MODULES JSB UPAG# UPDATE PAGE#. CMA,INA CONVERT TO DECIMAL. LDB MS63A JSB \CONV CONVERT PAGE # AND LDA P36 STUFF IN MESSAGE. LDB MES63 PRINT: JSB SETHD "SYSTEM DRIVER AREA <>:" * * SDAL JSB SCDRV GET NEXT DRIVER JMP SYSTB END OF IDENTS JMP SDAL A PRD - GO GET NEXT DRIVER LDA \ID3,I PICK UP CLB,INB USAGE FLAG IOR B AND SET STA \ID3,I LOADED BIT * JSB \LODN LOAD THE MODULE JSB INCAD UPDATE PBREL & \PREL JMP SDAL PROCESS NEXT DRIVER SPC 1 * * RESERVE SPACE AND SET UP SYSTEM TABLES * IN TABLE AREA II. * SYSTB JSB UPAG# UPDATE PAGE # FOR SEG 5. JSB NOTST TEST FOR PROGRAMS LOADED JSB \SYTB GO DO IT IN SEG 5 SPC 1 * * LOAD TABLE AREA II MODULES * LDA P13 SET MODULE TYPE STA \PTYP LODII JSB IDSCN SCAN IDENTS JMP ENDII END OF IDENTS LDB \ID3,I GET USAGE FLAG SLB,INB SKIP IF UNLOADED JMP LODII IGNORE LOADED PROGRAMS * STB \ID3,I UPDATE WORD 3 USAGE FLAG. JSB \LODN INITIATE AND LOAD THE PROGRAM JSB INCAD UPDATE \PREL & PBREL JMP LODII PROCESS NEXT TA.II MODULE * ENDII JSB NOTST TEST FOR PROGRAMS LOADED * CCA GET LAST WORD USED BY ADA \PREL TABLE AREA II MODULES IOR M1777 AND ROUND TO END OF PAGE INA GET FIRST WORD ADDRESS OF NEXT PAGE STA FWPRV AND SAVE AS PRIV LOAD PT