File BOS.TK

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

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 <FILENAME FPPEAE.US> IFNDEF EAE <FILENAME 27BFPP.US> 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 $-$-$



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