XLIST /LAST EDIT: 3-NOV-75, JV /******* MULTI8 BOOTSTRAP MODULE ******* /LAST EDIT: 29-AUG-75, JMS (APPEND SOME CODE) /LAST EDIT: 15-JULY-75, JV /LAST EDIT: 4-JULY-75, ELC /LAST EDIT: 9-MAY-75, JV /LAST EDIT: 10-DECEMBER-74, ELC /NAME: BO /LENGTH:ONE PAGE /FUNCTION:TO BOOTSTRAP OS8 FROM THE SYSTEM DEVICE / RESIDENT MODULE. THIS ENABLES ONE TO RE-WRITE IT / FOR SOME SPECIAL PURPOSE. THE MODULE IS CALLED BY / THE CTRL/B MODULE UPON TYPING BOOT. / THE OS8 BOOTSTRAP IS A TRICKY PIECE OF PROGRAM WHICH / ULTIMATELY RESULTS IN LOADING PAGE 0 OF THE SYSTEM- / DEVICE INTO THE LAST PAGE OF FIELD 1, AND PAGE 1 / INTO THE LAST PAGE OF FIELD 0. BO ALSO LOADS THE LAST / PAGE OF BG FIELD 3 WITH UPSCAL (USED BY EMG DEPT. / DYKZIGT HOSPITAL, ROTTERDAM). SINCE THE FOREGROUND / IS ONLY ABLE TO DO TRANSFERS OF ONE BLOCK OR ONLY / THE FIRST PAGE OF THAT BLOCK, A SPECIAL PROVISION / HAD TO BE MADE. / THE MODULE WORKS FOR THE BG TO WHICH TERED. IT FIRST WAITS TIINISHED. THE BG COULD RE/ SO IT SETS THE INCORE ING / THEBG IN CORE AND KEEPING IT THERE. IT THEN WAITS / UNTIL IT HAS ARRIVED. UPON COMPLETION OF THE TRANS- / FERS IT SETS THE BG STATUSBITS SO THAT IT WILL RUN. /USE: TAD (BJOB / JMS MONITOR / CALL / Y RETURN /AC UNCHANGED *200 "B^100+"O&3777 E CODE BOXDT1, BODTV1 ED POINTERS BOUPS, 400 /POINTS TO THE NEXT PAGE 0 BO, CDF MONFLD DCA BOUSTAT TAD I (BOTBLK DCA BODTV1+2 TAD BODTV1+2 DCA BODTV2+2 TAD I BOUSTAT //LOOK IF WE CAN DO IT AND (EMULATE+NOBOOT+BGBLOK SZA CLA JMP BOERR //NO, BG IS UNSAFE IFNZRO BGMAX-1 < TAD I BOUSTAT AND (ONDISK //LOOK IF HE IS IN CORE SNA CLA JMP BOINCORE //HE IS IN CORE ALREADY TAD (INCORE+EMULATE //REQUEST IN CORE;KEEP IT THERE > IFZERO BGMAX-1 < TAD (EMULATE //SET STATUS TO EMULATE > TAD I BOUSTAT /SET INCORE+EMULATE AND (-INACTIVE-BGSTOP-1 //RESET INACTIVE AND BGSTOP DCA I BOUSTAT // IFNZRO BGMAX-1 < TAD BOUSTAT //FIND SLOT TO WAIT TAD (USLOT // JMS DEFER // DCA BOSLOT // JMS MONITOR //GO AND TELL THE BG SCHEDULER SIGNAL BSSLOT JMS MONITOR //WAIT FOR BG IN CORE WAIT BOSLOT, 0 //OVERLAID WITH CORRECT SLOT# BOINCORE,CLA > TAD BOXDT1 /FIRST TRANSFER; FIELD 1 JMS BOXFER TAD BOXDT2 /2ND TRANSFER; FIELD 0 JMS BOXFER IFNZD TAD BOUSTAT TAD (UIT # CLL RAL /MULTIPL0 /FILE STRUCT., DEV NR DCA I (7760 /PUT IN DEV. CONTROL WORD TABLE TAD I (7760 DCA I (7761 /MAKE DSK: EQUAL TO SYS: > IFZERO BGFLDS-2 < CDF MONFLD /> IFZERO BGFLDS-4 < TAD (7600-1 DCA BGPNTR TAD MYCDF DCA BOLOOP BOLOOP, THE NEXT PAGE IN THE LABGFLD 3. CDF 30+BGFLDCNT JMP BOLOOP > TADUPC TAD (BGFLD%10+BGFLD+100 JMS BOPUT UFLDS IFDEF KM8E < CDTOIF CIF MONFLD JMS I (BGCDIF /THE NEWER STRATEGY ! > IFNZRO BGMAX-1 < TAD (-EMULATE-INCORE-BGSTOP-1 //CLEAR EMULATE BIT > IFZERO BGMAX-1 < TAD (-EMULATE-BGSTOP-1 //CLEAR EMULATE BIT > AND I BOUSTAT // TAD (BGSTOP //RE-SET BGSTOP DCA I BOUSTAT // SKP CLA BOERR, ACM1 /SIGNAL ERROR JMS MONITOR // EXIT SWPOUT BOUSTAT,0 /PNTR TO STATUSWORD. BOPUT, 0 /ROUTINE TO STORE IN BGDATA AREA DCA ZTEM1 CDTOIF TAD I BOPUT ISZ BOPUT TAD BOUSTAT DCA X CDF MONFLD TAD ZTEM1 DCA I X JMP I BOPUT /THE ACTUAL TRANSFER-AND-WAIT BOXFER, .-. /ENTER WITH PNTR IN AC CDTOIF JMS MONITOR CALL "S^100+"Y&3777 JMP .-3 /BUSY? REPEAT DCA .+3 /SAVE SLOT TO WAIT FOR JMS MONITOR WAIT 0 CLA JMP I BOXFER /TRANSFERVECTOR: PAGE ZERO BOOT-BLOCK TO LAST PAGE FIELD 1 BODTV1, BGFLD+110 7600 0000 /BOOT BLOCK /TRANSFERVECTOR: PAGE ONE BOOT-BLOCK N FACT IT MOVES PAGE 0 ALD 0 BODTV2, BGFLD+200CK BGPNTR=AUTO10 UPSOF CODE PAGE XLIST /NAME : UPSCAL /J.M.SCHIPPER , E.M.G. /DIJKZIGT , ROTTERDAM /DATE 19/6/75 /THIS ROUTINE HANDLES UPSINT,FPPEAE LOOKUP=2 SYSHLR=7607 UPSFLD=30 USRFLD=10 WRITE=4000 READ=0000 CDF N N=PROGRAM FIELD / FUNCTION / ERROR RETR FPPEAE.US / NOT ORETURN AC=0 /FUNCTION: 0=LOAD UPSINT IN CORE / 4000=SAVE UPSINT ARREA AND LOAD UPSINT / 1=LOAD UPSINT SAVE AREA / 2=LOAD FPPEAE IF AN FPPOUT IS DONE BEFORE / 4002=SAVE FPPEAE ARREA AND LOAD FPPEAE / 3=LOAD FPPEAE SAVE ARREA AND ALLOW TO PERFORM / A FPPIN. /DEFINE EAE EAE=1 RELOC 7600 UPSCAL, 0 /ENTRY, MUST BE 0 CLA CLL TAD I UPSCAL ISZ UPSCAL DCA MODE RDF TAD DFIF DCA RETFLD /SETUP RETURN FIELD CLL CLA CMA RAL /-2 /NO NEED TO PERFORM A LOOKUP TAD MODE /IF FPPEAE CALL IS ILLEGAL SZA CLA /CALL FPPEAE ? JMP .+4 /NO - GO ON. TAD FPPSW /YES - FPP IN CORE SZA CLA JMP LEAVE /FPPEAE ALREADY IN CORE TAD UPSINT /LOCATE UPSINT ON SYS DCA FILE JMS LOOK /LOOKUP UPSINT.US ON SYS TAD MODE AND K3 TAD TABP DCA FUNC TAD I FUNC DCA FUNC DCA CORE /SET CORE ADDRESS TO ZERO JMP I FUNC /PERFORM THE DESIRED TASK ERROUT, SKP CLA LEAVE, ISZ UPSCAL /SET NORMAL RETURN RETFLD, HLT /OVERLAYED BY CALLING BG TABP, .+1 UPSIN UPSOPPSW, 0 UPSIN, TAD MOD SMA CLA JMP LOUPS /NOBF3 /SAVE UPSINT ARREA DCA FUNC CLL CLA IAC RAL /SKIP 2 BLOCKS UPSINT JMS SYS LOUPS, TAD RD2BF3 /READ UPSINT DCA FUNC JMS SYS JMP LEAVE UPSOUT, TAD RD4BF3 /READ UPSINTAREA DCA FUNC CLL CLA IAC RAL /SKIP 2 BLOCK JMS SYS JMP LEAVE FPPOUT, TAD RD6BF3 /READ FPPEAE ARREA DCA FUNC TAD K4600 DCA CORE TAD K6 JMS SYS DCA FPPSW /CLEAR SW : FPP NOT IN CORE JMP LEAVE FPPIN, TAD K4600 DCA CORE /CORE ADDRESS TO 4600 TAD MODE /SAVE AND LOAD ? SMA CLA JMP LDFPP /LOAD FPPEAE SALDFP, TAD WR6BF3 /SAVE FPP AREA DCA FUNC TAD K6 JMS SYS LDFPP, TAD FPP /LOOKUP FOR FPPEAE.US DCA FILE JMS LOOK /LOOKUP FPP TAD RD6BF3 /LOAD FPPEAE DCA FUNC CLA CMA /FPPEAE DOES'T HAS A CCB !! JMS SYS CLA IAC DCA FPPSW /SET SW: FPP IN CORE TAD DF0 DCA 43 /INIT. LOAD FIELD FOR FPP TAD K7413 DCA 61 /SET INTERN.POINTER JMP LEAVE MODE, SYS, 0 TAD FILE /STARTING BLOCK OF UPSINT.US (SV) IAC /SKIP CORE CONTROL BLOCK FILE .SVJMS I LSYSHLR FUNC, 0 ERROUT JMP I SYS L CDF UPSFLD CIF USRFP FILE, 0 0 JMP ERROUT JMP I LOOK UPSINT, .+1 FILENAME UPSINT.US FPP, .+1 IFDEF EAE IFNDEF EAE WR4BF3, 4^200+WRITE+UPSFLD RD4BF3, 4^200+READ+UPSFLD RD2BF3, 3, 6^200+WRITE+UPSFLD R L7700, 7700 K4600, 46K6, 6 DF0, CDF DFIF, CUPSEND=. RELOC $-$-$ EJECT **** FRIDO **** / / DBDI=6500 DBEI=6501 DBSK=6502 DBCI=6503 DBRI=6504 DBCO=6505 DBSO=6506 DBRO=6507 / / /DEVICE FUNCTION WORD: / /------------------------------------------------- / I 0 I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11 I /-------------------------------------------------- / ---UNUSED---I-1-I-UNIT--I-0=AMPL-MODES--I-H/CIPULS / 1=FILTR-MODES / 0=HDFILTR / 1=LDFILTR / / /PROGRAM FUNCTION WORD (CALLING WORD IN ACC) / /------------------------------------------------------- / I 0 I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11 I /------------------------------------------------------- / W/R UNIT DEV STATE / / /BIT 6-8: /0=AMPLIFIER /1=HP FILTER /2=LP FILTER / / /BIT 9-11: / /STATE AMPL HPF LPF /--------------------------- /000 10 2 500 UV,HZ,HZ /001 40 20 2000 /010 100 50 5000 /011 200 100 10000 /100 500 --- --- /101 2000 --- --- /110 50-- --- /--------------- /CALL: / TAD (FUNCTION / JMS I (7600 / RETUR/ /0=HANDLE INTERRUPT RETURNS WITH AC=0 /BIT0=0: READ STATE AC=STATE /BIT1=1: WRITE STATE AC=0 / EJECT FIELD 2 *7600 FRIDO, 1 /ENTRY AND VERSION NUMBER DCA DFUNC RDF TAD CDIF0 DCA LEAVE CDF 2NDLE INTERRUPT ? JMP D - SET ? JMP GET /NOS A PROGR WORD TO A DEV IT NR TAD K400 /SET BIT 3 DCA DEV TAD DFUNC AND K30 /DEV=0 SNA JMP AMPPD /YES - AMPLIFIER AND K20 /MASK BIT 7 TAD K40 /ITS A FILTER:SET BIT 6 TAD DEV DCA DEV TAD DFUNC AND K3 JMP .+3 AMPPD, TAD DFUNC AND K7 CLL RTL TAD DEV ST, DBSO /SET SOME OUTPUT BITS CMA DBCO /CLEAR OTHER BITS CLA IAC /GIVE A WRITE PULS ON BIT 11 DBSO K3, 3 /MAKES THE PULS A LITTLE BIT LONGER K7, 7 K20, 20 K30, 30 CLA IAC DBCO CLA JMS LOCATE TAD DFUNC /SET FUNC IN TABLE AND K7 /STATE DCA I UNIT JMP LEAVE GET, JMS LOCATE TAD I UNIT /GET STATE JMP LEAVE DBINT, DBRI /READ INPUT DCA DEV TAD DEV CLL RTR /COMPUTER CONTROL ? SZL CLA JMP LEAVE /NO BIT 10=0 -EXIT- IAC /GIVE READ PULS ON BIT 11 DBSO K40, 40 /MAKE THE PULS A LITTLE LONGER K300, 300 K400, 400 CLA IAC DBCO CLA TAD DEV /CONVERT A DEV WORD TO A PROGR.WORD AND K300 /MASK UNIT NR DCA DFUNC TAD DEV BSW /BIT 6=0? SMA JMP AMPDP /N0- BIT 7=0? SPA CLA IA HPF=1 CLL RTL RAL UNC DCA DFUNC /COLLECTR AND K3 /ADD STATE JMP .+4 AMPDP, BSW /AMPL=0 RTR /ADD STATE AND K7 TAD DFUNC DCA DFUNC TAD DEV JMP ST DFUNC, 0 DEV, 0 LOCATE, 0 TAD DFUNC BSW AND K3 /MAX=4 UNITS DCA UNIT /UNIT NUM CLL RAL /BY TAD UNEGIN ADDRESS TABLE DCAIN TABLE TAD DFUNC RNUMBER TAD UNIT /ADD DEV DCA UNIT /UNIT DEV PLACE JMP I LOCATED UNIT, 0 LEAVE, CDF CIF JMP I FRIDO CDIF0, CDF CIF 0 UNITP, .+1 UNIT0, AMP0, 0 HP0, 0 LP0, 0 UNIT1, AMP1, 0 HP1, 0 LP1, 0 UNIT2, AMP2, 0 HP2, 0 LP2, 0 UNIT3, AMP3, 0 HP3, 0 LP3, 0 $-$-$