File BO.TK

Directory of image this file is from
This file as a plain text file

/******* MULTI8 BOOTSTRAP MODULE *******
/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. 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 BJOB BELONGS,
/	WHEN ENTERED. IT FIRST WAITS TILL THE EMULATOR HAS
/	FINISHED. THE BG COULD RESIDE ON DISK, HOWEVER.
/	SO IT SETS THE INCORE AND EMULATE BIT, REQUESTING
/	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
/	   "B^100+"O&3777
/	 BUSY RETURN	/AC UNCHANGED
/	NORMAL RETURN	/AC=0

*200 "B^100+"O&3777 200 /ONE PAGE BOXDT1, BODTV1 BOXDT2, BODTV2 /RELOCATED POINTERS 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 IFNZRO BGMAX-1 < CDF MONFLD TAD BOUSTAT TAD (UDISK JMS DEFER /GET UNIT # CLL RAL /MULTIPLY BY 10 RTL TAD (4500 /FILE STRUCT., DEV NR 51,52,.. CDF BGFLD+10 DCA I (7760 /PUT IN DEV. CONTROL WORD TABLE TAD I (7760 DCA I (7761 /MAKE DSK: EQUAL TO SYS: > CDF MONFLD TAD C7600 JMS BOPUT UPC TAD (BGFLD%10+BGFLD+100 JMS BOPUT UFLDS JMS BOPUT UAC 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 TO LAST PAGE FIELD 0 /IN FACT IT MOVES PAGE 0 AND 1 TO LAST 2 PAGES FIELD 0 BODTV2, BGFLD+200 7400 0000 /BOOT BLOCK $$$



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search