File M4.PA (PAL assembler source file)

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

/******** TOPS-8 MONITOR (M4) ********
XLIST -LDATA-1&XLISTX
/****************************************************
/*********   D A T A   S T R U C T U R E S   ********
/****************************************************

MONEND=.

IFNZRO MONEND&4000 < IFNZRO DATORG-MONEND&4000 <
			/IF RESIDENT CODE RUNS INTO DATA...
IFZERO FIELDS-2&4000 <	/AND THERE IS A SECOND FOREGROUND FIELD...
	BUFFLD=MONFLD+10/MOVE THE BG TELETYPE BUFFERS INTO
			/THE SECOND FORGROUND FIELD
IFNZRO PASS1 <DATORG=BGBUFL+DATORG/THIS GIVES US SOME ROOM AGAIN.>>>
IFNZRO DATORG-MONEND&4000 <CORERR,? /THATS THE END .... >>

DATORG=DATORG&7600
*DATORG

IFDEF TAPE <		/TABLE WHICH HOLDS CURRENT POSITION
TAPETB,	ZBLOCK 10	/FOR EACH UNIT NUMBER >

IFNZRO BGMAX <

BOTBLK,	0	/BLOCK NUMBER OF BOOT BLOCK >

DSKTAB,	ZBLOCK 40	/10 UNIT #, 4 WORDS EACH
		/DEFINITIONS FOR THE VIRTUAL DISK STRUCTURE
		/USED BY THE 'DK' TASK TO TRANSLATE VIRTUAL
		/TO FYSICAL DISKG <
COMMON,	ZBLOCK COML
			/DIFFERENT FOR ANY I	ZBLOCK MAXSLOT^2

IFZORE THEN 1 BACKGROUND :
	BSSLOT=MAXSLOT
	ZBLOCK BGMAX^2+2/THE BG SCHEDULER WAIT SLOT
			/AND OTHER BG WAIT SLOTS
	    >/END OF BGMAX-2&4000

ASSLST,	ZBLOCK MAXNAM

NAMLST,	ZBLOCK MAXNAM+1		/MUST BE BEHIND ASSRKLST,	CLRKBF+30	/THIS LECTION ROUTINE
	KRS
	KKL8E2
	6004+KL8E2
	KB23 <
	CLRKBF+KL8E3
	6004+KL8E3
	KB3
	TASKNA K3
IFDEF KL8E4 <
	CLRKBF+KL8E4
	6004+KL8E4
	KB4
	TASKNA K4
IFDEF KL8E5 <
	CLRKBF+KL8E5
	6004+KL8E5
	KB5
	TASKNA K5
IFDEF KL8E6 <
	CLRKBF+KL8E6
	6004+KL8E6
	KB6
	TASKNA K6
IFDEF KL8E7 <
	CLRKBF+KL8E7
	6004+KL8E7
	KB7
	TASKNA K7	/>>>>>
TTYLST,			/THIS LIST DRIVES THE REENTRANT TTY DRIVERS
TT1LST,	0
	TLS
	TTY1
	ZBLOCK 3
	-T1CHAR
	-T1FILL
	0
KK1LST,	KB1
	KRS
	KCC
TT2LST,	0
	6016+KL8E2
	TTY2
	ZBLOCK 3
	-T2CHAR
	-T2FILL
	0
KK2LST,	KB2
	6004+KL8E2
	6002+KL8E2
IFDEF KL8E3<
TT3LST,	0
	6016+KL8E3
	TTY3
	ZBLOCK 3
	-T3CHAR
	-T3FILL
	0
KK3LST,	KB3
	6004+KL8E3
	6002+KL8E3
IFDEF KL8E4 <
TT4LST,	0
	6016+KL8E4
	TTY4
	ZBLOCK 3
	-T4CHAR
	-T4FILL
	0
KK4LST,	KB4
	6004+KL8E4
	6002+KL8E4
IFDEF KL8E5 <
TT5LST,	0
	6016+KL8E5
	TTY5
	ZBLOCK 3
	-T5CHAR
	-T5FILL
	0
KK5LST,	KB5
	6004+KL8E5
	6002+KL8E5
IFDEF KL8E6<
TT6LST,	0
	6016+KL8E6
	TTY6
	ZBLOCK 3
	-T6CHAR
	-T6FILL
	06
	6002+KL8E6
IFDEF KLKL8E7
	TTY7
	ZBLOCK 3
KK7LST,	KB7
	6004+KL8E
IFNDEF NODISK < CLRTAB, ZBLOCK INTDEV-1 /HOLDS CLEAR-IOT'S MAPBEG=. /HERE HOLE STARTS SEARCHING IFNZRO DATORG-MONEND < /IF SOME CORE FREE IN MONFLD CORMAP=-MONEND%200 7740+MAPBEG /THIS IS THE BASE OF THE MND%200 IFNZRO -DATORG&2&400 <-3;-3> IFNZRO -D IFNZRO -DATORG&2000 <- IFNZRO -DATORG&4000 <-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3> IFZERO FIELDS-2&4000 <-3 /PAGE ZERO OF MONFLD+10> > /END OF IFNZRO DATORG-MONEND IFZERO DATORG-MONEND <CORMAP=MAPBEG-41 > /NO ROOM IN MONFLD IFZERO FIELDS-2&4000 < /IF MORE THAN ONE FOREGROUND FIELD IFNZRO MONFLD <ZBLOCK 37> IFZERO MONFLD <ZBLOCK 36 IFNZRO FIELDS-2 <-3>> IFZERO FIELDS-3&4000 <-3;ZBLOCK 37 IFZERO FIELDS-4&4000 <-3;ZBLOCK 37 IFZERO FIELDS-5&4000 <-3;ZBLOCK 37 IFZERO FIELDS-6&4000 <-3;ZBLOCK 37 IFZERO FIELDS-7&4000 <-3;ZBLOCK 37 IFZERO FIELDS-10&4000 <-3;ZBLOCK 37>>>>>>> -3 /NOTE THAT THE MAP MUST END WITH MAPEND, 0 /-3;0 IN ORDER TO TERMINATE THE /SEARCH LOOPS OF HOLE
IFNZRO BGMAX < /TABLE OF ASSIGNABLE EMULATOR TASKS. USED BY CENTRAL EMULATOR /TO RELEASE THEM IF BG COMES IN KEYBOARD MONITOR ASEMTB, IFDEF CRD < TASKNA CR /CARDREADER EMULATOR > IFDEF LPT < TASKNA LE /LINEPRINTER EMULATOR > IFDEF PTR < TASKNA RE /READER EMULATOR >PUNCHER EMULATOR > IFDEAL READER > IFDEF HSP <H > IFDEF AX08 < TASKNAR > IFDEF AD8EA < TASKNA AM / AD MULTIPLEXER > IFDEF DP8E < TASKNA CE /DP8E COMMUNICATIONS EMULATOR > IFDEF TONCLK < TASKNA SC /SPECIAL FILE INPUT TASK > 0 /ONE SPARE 0 /ZERO ENDS THE LIST AS USUAL /TAB/0=NOT EXECUTABLE /G.T.ASK'S NAME (TASKNAME PSEDISTANCE TO SERVICE CODETAB -EMCLEAR+EMDOT / IFDEF PTR < TASKNA RE /READER EMULATOR > IFDEF PTP < TASKNA PE /PUNCHER EMULATOR > *EMTAB+3 -KH+EMDOT -KH+EMDOT IFDEF KM8E <*EMTAB+5 IFDEF VC8E <TASKNA SC /VC8E SCOPE EMULATOR > IFDEF FYSCLOCK < /LOCAL FOR FYSIOLOGY UTRECHT -EMEXEC+EMDOT /KV8/L IOT'S -EMEXEC+EMDOT -EMEXEC+EMDOT >> IFDEF CENTRON < *EMTAB+15 TASKNA LE /CENTRONICS LINEPRINTER EMULATION. > *EMTAB+20 IFNDEF KM8E < -EMFOUR+EMDOT /620X > IFDEF KM8E < -EMCDIF+EMDOT /620X -EMCDIF+EMDOT /621X IFZERO BGFLDS-4 < -EMCDIF+EMDOT /622X -EMCDIF+EMDOT /623X > IFZERO BGFLDS-2 < -EMFOUR+EMDOT /622X -EMFOUR+EMDOT /623X > IFNZRO BGFLDS-4 <IFNZRO BGFLDS-2 <BGFLDR,XERROR >>> IFNDEF KM8E < *EMTAB+23 -EMFOUR+EMDOT /623X > -EMFOUR+EMDOT /624X -EMFOUR+EMDOT /625X -EMFOUR+EMDOT /626X -EMFOUR+EMDOT /627X
IFDEF KL8P < IFDEF HSR < *EMTAB+30 TASKNA HR > IFDEF HSP < *EMTAB+31 TASKNA HP > > IFDEF AX08 < *EMTAB+34 TASKNA AO /EMULATOR > IFDEF KM8E < IFDEF KNA AM / > IFDEF TONCLKECHT *EMTAB+55 -EMEX -EMEXEC+EMDOT / >> IFDEF TONCLK < *EMTAB+63 TASKNA SC /SPECIAL FILE READING TASK > IFDEF CRD < *EMTAB+63 TASKNA CR *EMTAB+67 TASKNA CR /CARDREADER EMULATOR > IFDEF LE8E < *EMTAB+66 TASKNA LE /LINEPRINTER EMULATOR > *EMTAB+77 -EMGIGA+EMDOT /GIANT IOT =6770 /TABLE OF "GIANT IOT'S", UAC IS INDEX AFTER 6770 GIGATB, ZBLOCK GIGAMX IFDEF DAYTIM < *GIGATB -EMTIME+EMDOT /TIME-OF-DAY REQUEST > IFDEF AX08 < *GIGATB+1 TASKNA AE /AX08 SAMPLE SYSTEM > IFDEF AD8EA < *GIGATB+1 TASKNA AD /A-D CONVERTER TASK > IFDEF R1 < *GIGATB+1 TASKNA R1 /SPECIAL R1 INTERFACE > *GIGATB+2 -EMQUIT+EMDOT /DISABLE KEYBOARD ECHO -EMECHO+EMDOT /ENABLE KEYBOARD ECHO IFNZRO BGMAX-1 < -EMBLOK+EMDOT /CLEAR BGBLOK-BIT OF ALL BG'S > IFDEF DR8EA < *GIGATB+5 TASKNA FR /FRIDO TASK > IFDEF VC8E < *GIGATB+6 TASKNA DA /DISPLAY ANALOG SIGNAL TASKNA DC /DISPLAY A CHARACTER > IFDEF AD8EA < IFZERO 10-GIGAMX&4000 <GIGMXR,XERROR> *GIGATB+10 TASKNA AP /READ ADEF DP8E < IFZERO 10-GI> *GIGATB+10 TASKNA CND OF GIGATB
IFDEF BUFUFFERS GO INTO MONFLD+10 ... DOTF00=. /REMEMBER WERE WE ARE IN MONFLD FIELD BUFFLD%10 /CHANGE TO BUFFLD *DOTF10 /WHY NOT ? > O=4000 /NOT YET ECHOED BG1IN, 40;6;0;6 215;O+"D;O+"A;O+"T;O+"E;O+215 ZBLOCK LN;26;0;26 0;"T;"O;"P;RSLO / TOPS-8 LABEL " ;" ;"#;"1 ZBLOCK BG1OUAX-2&4000 < BG2IN, 40;6;0;6 215;O+"D;O+"A;O+"T;O+"E;O+215 ZBLOCK BG2IN+44-. BG2OUT, BG2OLN;26;0;26 0;"T;"O;"P;"S;"-;"8;" ;"V;VERSHI;VERSLO " ;"T;"E;"R;"M;"I;"N;"A;"L;" ;"#;"2 ZBLOCK BG2OUT+BG2OLN+4-. IFZERO BGMAX-3&4000 < BG3IN, 40;6;0;6 215;O+"D;O+"A;O+"T;O+"E;O+215 ZBLOCK BG3IN+44-. BG3OUT, BG3OLN;26;0;26 0;"M;"U;"L;"T;"I;"8;" ;"V;VERSHI;VERSLO " ;"T;"E;"R;"M;"I;"N;"A;"L;" ;"#;"3 ZBLOCK BG3OUT+BG3OLN+4-. IFZERO BGMAX-4&4000 < BG4IN, 40;6;0;6 215;O+"D;O+"A;O+"T;O+"E;O+215 ZBLOCK BG4IN+44-. BG4OUT, BG4OLN;26;0;26 0;"M;"U;"L;"T;"I;"8;" ;"V;VERSHI;VERSLO " ;"T;"E;"R;"M;"I;"N;"A;"L;" ;"#;"4 ZBLOCK BG4OUT+BG4OLN+4-. IFZERO BGMAX-5&4000 < BG5IN, 40;6;0;6 215;O+"D;O+"A;O+"T;O+"E;O+215 ZBLOCK BG5IN+44-. BG5OUT, BG5OLN;26;0;26 0;"M;"U;"L;"T;"I;"8;" ;"V;VERSHI;VERSLO " ;"T;"E;"R;"M;"I;"N;"A;"L;" ;"#;"5 ZBLOCK BG5OUT+BG5OLN+4-. IFZERO BGMAX-6&4000 < BG6IN, 40;6;0;6 215;O+"D;O+"A;O+"T;O+"E;O+215 ZBLOCK BG6IN+44-. BG6OUT, BGL;"T;"I;"8;" ;"V;VERSHI;"I;"N;"A;"L;" ;"#;"6 Z IFZERO BGMAX-7&4000 < "D;O+"A;O+"T;O+"E;O+215 ZBLOCK BG7IN+44-. BG7OUT, BG7OLN;26;0;26 0;"M;"U;"L;"T;"I;"8;" ;"V;VERSHI;VERSLO " ;"T;"E;"R;"M;"I;"N;"A;"L;" ;"#;"7 ZBLOCK BG7OUT+BG7OLN+4-. >>>>>> BGBUFEND=.-1 IFDEF BUFFLD < /I+10 NOW DOTF10=. FIEO DATAAREA IN MONFLD *MAP WHAT WE DID O=DOTF1S FOR ALL FIELD 1 MATERIAL IFNZRO O&200 <-3> IFNZRO O&400 <-3;-3> IFNZRO O&1000 <-3;-3;-3;-3> IFNZRO O&2000 <-3;-3;-3;-3;-3;-3;-3;-3> IFNZRO O&4000 <-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3> IFZERO DATORG-MONEND <MAPBEG=. /NOW LET HOLE START HERE > *DOTF00 /NICE WE HAVE REMEMBERED THAT >
/DEFINITIONS FOR BG DATA AREA;ALL RELATIVE BGDATA, BG1, RELOC 0 /ALL FOLLOWING SYMBOLS ARE RELATIVE USTAT, IFZERO BGMAX-1 <INACTIVE /STATUS WORD > IFNZRO BGMAX-1 <INACTIVE+ONDISK /STATUS WORD > UMQ, 0 /USERS MEMORY QUOTIENT REGISTER USC, 0 /MXX.XXX.SSS.SSS A/B MODE AND STEPCOUNTER UPC, 7600 /USERS CURRENT PROGRAM COUNTER UFLDS, BGFLD%10+BGFLD+100 /LGX.XXU.III.FFF: LINK, GREATER-THAN, /USER MODE, INSTRUCTION FIELD, DATAFIELD UAC, 0 /USERS CURRENT ACCUMULATOR UINST, 0 /LAST EMULATED INSTRUCTION USW, 0 /USERS SWITCH REGISTER (VIRTUAL) UCOMM, 0 /COMMUNICATION WORD UDTV, ZBLOCK 3 /TRANSFER VECTOR UDISK, 1 /VIRTUAL DISK UNIT NUMBER KHOTMP, 0 RITER UCHAR, 0 /THE CUBUFIN, BG1IN /POINTER TBG1OUT /POINTER TO OUTP4 /TCBP OF INPUT READER UWRTR, KHOBG1+4 /TCBP OF OUTPUT WRITER UCUR, EMBG1+4 /TCBP OF EMULATOR UKB, K1TCBP /TCBP OF INPUT TASK UTTY, T1TCBP /TCBP OF OUTPUT HANDLER UREAD, -DELAY&7776-1 /BG-READER RUN FLAG: ODAG, 4000=NO ECHO IFZERO THAN 1 BG ... USWAP, 1PING BLOCK # USLOT, MAXORE SLOT UNEXT, BG2 /POINTER TO NEXT BG > UEND=. /END FOR THIS BG RELOC /END OF RELATIVE DEFINITIONS
IFZERO BGMAX-2&4000 < /THE SECOND BG: BG2, RELOC 0 /ALL FOLLOWING SYMBOLS ARE RELATIVE USTAT, INACTIVE+ONDISK /STATUS FOR BACKGROUND SCHEDULER UMQ, 0 /USERS MEMORY QUOTIENT REGISTER USC, 0 /MXX.XXX.SSS.SSS A/B MODE AND STEPCOUNTER UPC, 7600 /USERS CURRENT PROGRAM COUNTER UFLDS, BGFLD%10+BGFLD+100 /LGX.XXU.III.FFF: LINK, GREATER-THAN, /USER MODE, INSTRUCTION FIELD, DATAFIELD UAC, 0 /USERS CURRENT ACCUMULATOR UINST, 0 /LAST EMULATED INSTRUCTION USW, 0 /USERS SWITCH REGISTER (VIRTUAL) UCOMM, 0 /COMMUNICATION WORD UDTV, ZBLOCK 3 /TRANSFER VECTOR UDISK, 2 /VIRTUAL DISK UNIT NUMBER KHOTMP, 0 /TEMPORARY FOR OUTPUT WRITER UCHAR, 0 /THE CURRENT INPUT CHARACTER UBUFIN, BG2IN /POINTER TO INPUT BUFFER UBUFOUT,BG2OUT /POINTER TO OUTPUT BUFFER URDR, KHIBG2+4 /TCBP OF INPUT READER UWRTR, KHOBG2+4 /TCBP OF OUTPUT WRITER UCUR, EMBG2+4 /TTCBP /TCBP OF INPUT TASF OUTPUT HANDLER UREAD,R RUN FLAG: ODD=GO UECHO ECHO USWAP, 2-1^SWAPLG^BGFLDS%2 /SWAPPING BLOCK # USLOT, MAXSLOT+2 /WAIT-FOR-BG-IN-CORE SLOT UNEXT, IFZERO BGMAX-2 <BG1> /POINTER TO FIRST BG IFNZRO BGMAX-2 <BG3> /POINTER TO NEXT BG UEND=. /END FOR THIS BG RELOC /END OF RELATIVE DEFINITIONS >
IFZERO BGMAX-3&4000 < /THE THIRD BG: BG3, RELOC 0 /ALL FOLLOWING SYMBOLS ARE RELATIVE USTAT, INACTIVE+ONDISK /STATUS FOR BACKGROUND SCHEDULER UMQ, 0 /USERS MEMORY QUOTIENT REGISTER USC, 0 /MXX.XXX.SSS.SSS A/B MODE AND STEPCOUNTER UPC, 7600 /USERS CURRENT PROGRAM COUNTER UFLDS, BGFLD%10+BGFLD+100 /LGX.XXU.III.FFF: LINK, GREATER-THAN, /USER MODE, INSTRUCTION FIELD, DATAFIELD UAC, 0 /USERS CURRENT ACCUMULATOR UINST, 0 /LAST EMULATED INSTRUCTION USW, 0 /USERS SWITCH REGISTER (VIRTUAL) UCOMM, 0 /COMMUNICATION WORD UDTV, ZBLOCK 3 /TRANSFER VECTOR UDISK, 3 /VIRTUAL DISK UNIT NUMBER KHOTMP, 0 /TEMPORARY FOR OUTPUT WRITER UCHAR, 0 /THE CURRENT INPUT CHARACTER UBUFIN, BG3IN /POINTER TO INPUT /POINTER TO OUTPUT BUFF OF INPUT READER UWRTR,T WRITER UCUR, EMBG3+4 K3TCBP /TCBP OF INPUT TASK UTTY, T3TCBP /TCBP OF OUTPUT HANDLER UREAD, -DELAY&7776-1 /BG-READER RUN FLAG: ODD=GO UECHO, 0 /ECHO FLAG, 4000=NO ECHO USWAP, 3-1^SWAPLG^BGFLDS%2 /SWAPPING BLOCK # USLOT, MAXSLOT+LOT UNEXT, IFZERO BGMARST BG IFNZRO BGMAX-3 < UEND=. /END FOR THISELATIVE DEFINITIONS >
IFZERO BGMAX-4&4000 < /THE FOURTH BG: BG4, RELOC 0 /ALL FOLLOWING SYMBOLS ARE RELATIVE USTAT, INACTIVE+ONDISK /STATUS FOR BACKGROUND SCHEDULER UMQ, 0 /USERS MEMORY QUOTIENT REGISTER USC, 0 /MXX.XXX.SSS.SSS A/B MODE AND STEPCOUNTER UPC, 7600 /USERS CURRENT PROGRAM COUNTER UFLDS, BGFLD%10+BGFLD+100 /LGX.XXU.III.FFF: LINK, GREATER-THAN, /USER MODE, INSTRUCTION FIELD, DATAFIELD UAC, 0 /USERS CURRENT ACCUMULATOR UINST, 0 /LAST EMULATED INSTRUCTION USW, 0 /USERS SWITCH REGISTER (VIRTUAL) UCOMM, 0 /COMMUNICATION WORD UDTV, ZBLOCK 3 /TRANSFER VECTOR UDISK, 4 /VIRTUAL DISK UNIT NUMBER KHOTMP, 0 /TEMPORARY FOR OUTPUT WRITER UCHAR, 0 /THE CURRENT INPUT CHARACTER UBUFIN, BG4IN /POINTER TO INPUT BUFFER UBUFOUT,BG4OUT /POINTER TO OUTPUT BUFFER URDR, KHIBG4+4 /TCBP OF INPUT READER UWRTR, KHOBG4+4 /TCBP OF OUTPUT WRITER UCUR, EMBG4+4 /TCBP OF EMULATOR UKB, K4TCBP /TCBP OF INPUT TASK UTTY, T4TCBP /TCBP OF OUTPUT HANDLERG-READER RUN FLAG: ODD=G 4000=NO ECHO USWAP, 4-ING BLOCK # USLOT, MAXSRE SLOT UNEXT, IFZERO BGMAX-4 <BG1> /POINTER TO FIRST BG IFNZRO BGMAX-4 <BG5> /POINTER TO NEXT BG UEND=. /END FOR THIS BG RELOC /END OF RELATIVE DEFINITIONS >
IFZERO BGMAX-5&4000 < /THE FITH BG: BG5, REMBOLS ARE RELATIVE USATUS FOR BACKGROUND SCHEMORY QUOTIENT REGISTER A/B MODE AND STEPCOUNTER UPC, 7600 /USERS CURRENT PROGRAM COUNTER UFLDS, BGFLD%10+BGFLD+100 /LGX.XXU.III.FFF: LINK, GREATER-THAN, /USER MODE, INSTRUCTION FIELD, DATAFIELD UAC, 0 /USERS CURRENT ACCUMULATOR UINST, 0 /LAST EMULATED INSTRUCTION USW, 0 /USERS SWITCH REGISTER (VIRTUAL) UCOMM, 0 /COMMUNICATION WORD UDTV, ZBLOCK 3 /TRANSFER VECTOR UDISK, 5 /VIRTUAL DISK UNIT NUMBER KHOTMP, 0 /TEMPORARY FOR OUTPUT WRITER UCHAR, 0 /THE CURRENT INPUT CHARACTER UBUFIN, BG5IN /POINTER TO INPUT BUFFER UBUFOUT,BG5OUT /POINTER TO OUTPUT BUFFER URDR, KHIBG5+4 /TCBP OF INPUT READER UWRTR, KHOBG5+4 /TCBP OF OUTPUT WRITER UCUR, EMBG5+4 /TCBP OF EMULATOR UKB, K5TCBP /TCBP OF INPUT TASK UTTY, T5TCBP /TCBP OF OUTPUT HANDLER UREAD, -DELAY&7776-1 /BG-READER RUN FLAG: ODD=GO UECHO, 0 /ECHO FLAG, 4000=NO ECHO USWAP, 5-1^SWAPLG^BGFLDS%2 /SWAPPING BLOCK # USLOT, MAXSLOT+5 /WAIT-FOR-BG-IN-CORE SLOT UNEXT, IFZERO BGMAX-5 <BG1> /POINTER TO FIRST BG IFNZRO BGMEXT BG UEND=. /END FOD OF RELATIVE DEFINITION0 < /THE SIXTH BG: BG6, SYMBOLS ARE RELATIVE USTAT, INACTIVE+ONDISK /STATUS FOR BACKGROUND SCHEDULER UMQ, 0 /USERS MEMORY QUOTIENT REGISTER USC, 0 /MXX.XXX.SSS.SSS A/B MODE AND STEPCOUNTER UPC, 7600 /USERS CURRENT PROGRAM COUNTER00 /LGX.XXU.III.FFF: LINER MODE, INSTRUCTION FIEUSERS CURRENT ACCUMULATOTED INSTRUCTION USW, 0 /USERS SWITCH REGISTER (VIRTUAL) UCOMM, 0 /COMMUNICATION WORD UDTV, ZBLOCK 3 /TRANSFER VECTOR UDISK, 6 /VIRTUAL DISK UNIT NUMBER KHOTMP, 0 /TEMPORARY FOR OUTPUT WRITER UCHAR, 0 /THE CURRENT INPUT CHARACTER UBUFIN, BG6IN /POINTER TO INPUT BUFFER UBUFOUT,BG6OUT /POINTER TO OUTPUT BUFFER URDR, KHIBG6+4 /TCBP OF INPUT READER UWRTR, KHOBG6+4 /TCBP OF OUTPUT WRITER UCUR, EMBG6+4 /TCBP OF EMULATOR UKB, K6TCBP /TCBP OF INPUT TASK UTTY, T6TCBP /TCBP OF OUTPUT HANDLER UREAD, -DELAY&7776-1 /BG-READER RUN FLAG: ODD=GO UECHO, 0 /ECHO FLAG, 4000=NO ECHO USWAP, 6-1^SWAPLG^BGFLDS%2 /SWAPPING BLOCK # USLOT, MAXSLOT+6 /WAIT-FOR-BG-IN-CORE SLOT UNEXT, IFZERO BGMAX-6 <BG1> /POINTER TO FIRST BG IFNZRO BGMAX-6 <BG7> /POINTER TO NEXT BG UEND=. /END FOR THIS BG RELOC /END OF RELATIVE DEFINITIONS >
IFZERO BGMAX-7&4000 < /THE SEVENTH BG: BG7, RELOC 0 /ALL FOLLOWING SYMBOLS ARE RELATIVE USTAT, INACTIVE+ONDISK /STATUS FOR BACKGROUSERS MEMORY QUOTIENT RE.SSS.SSS A/B MODE AND STSERS CURRENT PROGRAM COUFLD+100 /LGX.XXU.III.FFF: LINK, GREATER-THAN, /USER MODE, INSTRUCTION FIELD, DATAFIELD UAC, 0 /USERS CURRENT ACCUMULATOR UINST, 0 /LAST EMULATED INSTRUCTION USW, 0 /USERS SWITCH REGISTER (VIRTUAL) UCOMM, 0 /COMMUNICATION WORD UDTV, ZBLOCK 3 /TRANSFER VECTOR UDISK, 7 /VIRTUAL DISK UNIT NUMBER KHOTMP, 0 /TEMPORARY FOR OUTPUT WRITER UCHAR, 0 /THE CURRENT INPUT CHARACTER UBUFIN, BG7IN /POINTER TO INPUT BUFFER UBUFOUT,BG7OUT /POINTER TO OUTPUT BUFFER URDR, KHIBG7+4 /TCBP OF INPUT READER UWRTR, KHOBG7+4 /TCBP OF OUTPUT WRITER UCUR, EMBG7+4 /TCBP OF EMULATOR UKB, K7TCBP /TCBP OF INPUT TASK UTTY, T7TCBP /TCBP OF OUTPUT HANDLER UREAD, -DELAY&7776-1 /BG-READER RUN FLAG: ODD=GO UECHO, 0 /ECHO FLAG, 4000=NO ECHO USWAP, 7-1^SWAPLG^BGFLDS%2 /SWAPPING BLOCK # USLOT, MAXSLOT+7 /WAIT-FOR-BG-IN-CORE SLOT UNEXT, BG1 /NOTE! BG7 IS ALWAYS THE LAST ONE UEND=. /END FOR THIS BG RELOC /END OF RELATIVE DEFINITIONS > /END OF BGMAX CONDITIONAL > ONAL >
IFZERO .&4000 <ST ALWAYS BE NEGATIVE >OF TASK CONTROL BLOCKS SYSFLD;CDF+MONFLD%2;0;0 IFNDEF NODISK < TASKNA SY;0;SY;0 SYSFLD;CDF+SYSFLD%2;0;0 > TASKNA BB;0;BB;0 MONFLD;CDF MONFLD%2;0;0
IFNDEF KL8E2 <TT1LST=0;KK1LST=0> TASKNA T1;0;TT;TT1LST T1TCBP, MONFLD;CDA K1;0;KK;KK1LST K1TCBP0 IFDEF KL8E2 < "T^ T2TCBP, MONFLD;CDF MONF777;0;KK;KK2LST K2TCBP, MONFLD;CDF MONFLD%2;0;0 IFDEF KL8E3 < "T^100+"3&3777;0;TT;TT3LST T3TCBP, MONFLD;CDF MONFLD%2;0;0 "K^100+"3&3777;0;KK;KK3LST K3TCBP, MONFLD;CDF MONFLD%2;0;0 IFDEF KL8E4 < "T^100+"4&3777;0;TT;TT4LST T4TCBP, MONFLD;CDF MONFLD%2;0;0 "K^100+"4&3777;0;KK;KK4LST K4TCBP, MONFLD;CDF MONFLD%2;0;0 IFDEF KL8E5 < "T^100+"5&3777;0;TT;TT5LST T5TCBP, MONFLD;CDF MONFLD%2;0;0 "K^100+"5&3777;0;KK;KK5LST K5TCBP, MONFLD;CDF MONFLD%2;0;0 IFDEF KL8E6 < "T^100+"6&3777;0;TT;TT6LST T6TCBP, MONFLD;CDF MONFLD%2;0;0 "K^100+"6&3777;0;KK;KK6LST K6TCBP, MONFLD;CDF MONFLD%2;0;0 IFDEF KL8E7 < "T^100+"7&3777;0;TT;TT7LST T7TCBP, MONFLD;CDF MONFLD%2;0;0 "K^100+"7&3777;0;KK;KK7LST K7TCBP, MONFLD;CDF MONFLD%2;0;0 >>>>>>
IFNZRO BGMAX < KHIBG1, 4644;0;KHIST ;BG1;MONFLD;CDF MONFLD%2;0;0 KHOBG1, 4644;0;KHO ;BG1;MONFLD;CDF MONFLD%2;0;0 EMBG1, 4644;0;EMSTRT ;BG1;MONFLD;CDF MONFLD%2;0;0 IFZERO BGMAX-2&4000 < KHIBG2, 4644;0;KHIS%2;0;0 KHOBG2, 4644;0;KD%2;0;0 EMBG2, 4644;0;ENFLD%2;0;0 IFZERO BGM4;0;KHIST ;BG3;MONFLD;CDF MONFLD%2;0;0 KHOBG3, 4644;0;KHO ;BG3;MONFLD;CDF MONFLD%2;0;0 EMBG3, 4644;0;EMSTRT ;BG3;MONFLD;CDF MONFLD%2;0;0 IFZERO BGMAX-4&4000 < KHIBG4, 4644;0;KHIST ;BG4;MONFLD;CDF MONFLD%2;0;0 MONFLD;CDF MONFLD%2;0;0G4;MONFLD;CDF MONFLD%2;00 < KHIBG5, 4644;0;KHIS%2;0;0 KHOBG5, 4644;0;KHO ;BG5;MONFLD;CDF MONFLD%2;0;0 EMBG5, 4644;0;EMSTRT ;BG5;MONFLD;CDF MONFLD%2;0;0 IFZERO BGMAX-6&4000 < KHIBG6, 4644;0;KHIST ;BG6;MONFLD;CDF MONFLD%2;0;0 KHOBG6, 4644;0;KHO ;BG6;MONFLD;CDF MONFLD%2;0;0 EMBG6, 4644;0;EMSTRT ;BG6;MONFLD;CDF MONFLD%2;0;0 IFZERO BGMAX-7&4000 < KHIBG7, 4644;0;KHIST ;BG7;MONFLD;CDF MONFLD%2;0;0 KHOBG7, 4644;0;KHO ;BG7;MONFLD;CDF MONFLD%2;0;0 EMBG7, 4644;0;EMSTRT ;BG7;MONFLD;CDF MONFLD%2;0;0 >>>>>>> LOADPT, 0 /ZERO IS TERMINATOR IFNZRO MAXNAM^10+TCBTAB-.&4000 <TCBOVF,XERROR> /TO MANY TASKS ! ZBLOCK MAXNAM^10+TCBTAB-. /THE REST OF TCBTAB IS /FOR DISK-RESIDENT TASKS FRECOR, ZBLOCK FREEMAX^10 /THE ALLOCATABLE BLOCKS / / SYSTEM REFERENCE TABLE / REFTAB, TIME / SYYTEM TME AND DATA LOCATIONS / MSEC-1000 , SEC-60 , MIN-60 , HOURS-24 , OS/8-DATE /SOME TESTS: COREND=.-1 TEST2=DATORG+TEST1-COREND IFZERO COREND-MAXEND&4000 <FREERR,XERROR /CORE OVERFLOW >



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