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 DISK REQUESTS

IFDEF COMLNG <
COMMON,	ZBLOCK COMLNG	/BLOCK OF LOCATIONS,
			/DIFFERENT FOR ANY INSTALLATION >

HRDLST,	ZBLOCK MAXSLOT^2

IFZERO BGMAX-2&4000 <	/IF MORE 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 ASSLST !

IFDEF KL8E2 < BRKLST, CLRKBF+30 /THIS LIST DRIVES THE BREAK DETECTION ROUTINE KRS KB1 "K^100+"1&3777 CLRKBF+KL8E2 6004+KL8E2 KB2 "K^100+"2&3777 IFDEF KL8E3 < CLRKBF+KL8E3 6004+KL8E3 KB3 "K^100+"3&3777 IFDEF KL8E4 < CLRKBF+KL8E4 6004+KL8E4 KB4 "K^100+"4&3777 IFDEF KL8E5 < CLRKBF+KL8E5 6004+KL8E5 KB5 "K^100+"5&3777 IFDEF KL8E6 < CLRKBF+KL8E6 6004+KL8E6 KB6 "K^100+"6&3777 IFDEF KL8E7 < CLRKBF+KL8E7 6004+KL8E7 KB7 "K^100+"7&3777 />>>>> 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 0 KK6LST, KB6 6004+KL8E6 6002+KL8E6 IFDEF KL8E7 < TT7LST, 0 6016+KL8E7 TTY7 ZBLOCK 3 -T7CHAR -T7FILL 0 KK7LST, KB7 6004+KL8E7 6002+KL8E7 />>>>>>
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 MAP, ZBLOCK DATORG-MONEND%200 IFNZRO -DATORG&200 <-3> IFNZRO -DATORG&400 <-3;-3> IFNZRO -DATORG&1000 <-3;-3;-3;-3> IFNZRO -DATORG&2000 <-3;-3;-3;-3;-3;-3;-3;-3> 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 < "C^100+"R&3777 /CARDREADER EMULATOR > IFDEF LPT < "L^100+"E&3777 /LINEPRINTER EMULATOR > IFDEF PTR < "R^100+"E&3777 /READER EMULATOR > IFDEF PTP < "P^100+"E&3777 /PUNCHER EMULATOR > IFDEF HSR < "H^100+"R&3777 / SERIAL READER > IFDEF HSP < "H^100+"P&3777 / SERIAL PUNCH > IFDEF AX08 < TASKNA AO /AX08 OUTPUT EMULATOR > 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 /TABLE OF EXECUTABLE IOT'S /0=NOT EXECUTABLE /G.T.00="N^100+"A&3777 THE TASK'S NAME (TASKNAME PSEUDO ) /L.T.0= RELATIVE DISTANCE TO SERVICE CODE EMTAB, ZBLOCK 100 *EMTAB -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 "H^100+"R&3777 > IFDEF HSP < *EMTAB+31 "H^100+"P&3777 > > IFDEF AX08 < *EMTAB+34 "A^100+"O&3777 /EMULATOR FOR AX08 DIGITAL OUTPUTS > IFDEF KM8E < IFDEF AD8EA < *EMTAB+53 "A^100+"M&3777 / > IFDEF TONCLK < /MF8E SCOPE IOT'S UTRECHT *EMTAB+55 -EMEXEC+EMDOT -EMEXEC+EMDOT -EMEXEC+EMDOT / >> IFDEF TONCLK < *EMTAB+63 "S^100+"C&3777 /SPECIAL FILE READING TASK > IFDEF CRD < *EMTAB+63 "C^100+"R&3777 *EMTAB+67 "C^100+"R&3777 /CARDREADER EMULATOR > IFDEF LE8E < *EMTAB+66 "L^100+"E&3777 /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 "A^100+"E&3777 /AX08 SAMPLE SYSTEM > IFDEF AD8EA < *GIGATB+1 "A^100+"D&3777 /A-D CONVERTER TASK > IFDEF R1 < *GIGATB+1 "R^100+"1&3777 /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 "F^100+"R&3777 /FRIDO TASK > IFDEF VC8E < *GIGATB+6 "D^100+"A&3777 /DISPLAY ANALOG SIGNAL "D^100+"C&3777 /DISPLAY A CHARACTER > IFDEF AD8EA < IFZERO 10-GIGAMX&4000 <GIGMXR,XERROR> *GIGATB+10 "A^100+"P&3777 /READ AN ACTION POTENTIAL > IFDEF DP8E < IFZERO 10-GIGAMX&4000 <GIGDPR,XERROR> *GIGATB+10 "C^100+"E&3777 / > *GIGATB+GIGAMX /END OF GIGATB
IFDEF BUFFLD < /IF THE TELETYPE BUFFERS 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 BG1IN+44-. BG1OUT, BG1OLN;26;0;26 0;"T;"O;"P;"S;"-;"8;" ;"V;VERSHI;VERSLO / TOPS-8 LABEL " ;"T;"E;"R;"M;"I;"N;"A;"L;" ;"#;"1 ZBLOCK BG1OUT+BG1OLN+4-. IFZERO BGMAX-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;"T;"O;"P;"S;"-;"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, BG6OLN;26;0;26 0;"M;"U;"L;"T;"I;"8;" ;"V;VERSHI;VERSLO " ;"T;"E;"R;"M;"I;"N;"A;"L;" ;"#;"6 ZBLOCK BG6OUT+BG6OLN+4-. IFZERO BGMAX-7&4000 < BG7IN, 40;6;0;6 215;O+"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 < /IF WE ARE IN FIELD MONFLD+10 NOW DOTF10=. FIELD MONFLD%10 /GO BACK TO DATAAREA IN MONFLD *CORMAP+41 /SHOW IN COREMAP WHAT WE DID O=DOTF10+177&7600-200 /ACCOUNTS 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 /TEMPORARY FOR OUTPUT WRITER UCHAR, 0 /THE CURRENT INPUT CHARACTER UBUFIN, BG1IN /POINTER TO INPUT BUFFER UBUFOUT,BG1OUT /POINTER TO OUTPUT BUFFER URDR, KHIBG1+4 /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: ODD=GO UECHO, 0 /ECHO FLAG, 4000=NO ECHO IFZERO BGMAX-2&4000 < /IF MORE THAN 1 BG ... USWAP, 1-1^SWAPLG^BGFLDS%2 /SWAPPING BLOCK # USLOT, MAXSLOT+1 /WAIT-FOR-BG-IN-CORE 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 /TCBP OF EMULATOR UKB, K2TCBP /TCBP OF INPUT TASK UTTY, T2TCBP /TCBP OF OUTPUT HANDLER UREAD, -DELAY&7776-1 /BG-READER RUN FLAG: ODD=GO UECHO, 0 /ECHO FLAG, 4000=NO 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 BUFFER UBUFOUT,BG3OUT /POINTER TO OUTPUT BUFFER URDR, KHIBG3+4 /TCBP OF INPUT READER UWRTR, KHOBG3+4 /TCBP OF OUTPUT WRITER UCUR, EMBG3+4 /TCBP OF EMULATOR UKB, 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+3 /WAIT-FOR-BG-IN-CORE SLOT UNEXT, IFZERO BGMAX-3 <BG1> /POINTER TO FIRST BG IFNZRO BGMAX-3 <BG4> /POINTER TO NEXT BG UEND=. /END FOR THIS BG RELOC /END OF RELATIVE 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 HANDLER UREAD, -DELAY&7776-1 /BG-READER RUN FLAG: ODD=GO UECHO, 0 /ECHO FLAG, 4000=NO ECHO USWAP, 4-1^SWAPLG^BGFLDS%2 /SWAPPING BLOCK # USLOT, MAXSLOT+4 /WAIT-FOR-BG-IN-CORE 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, 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, 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 BGMAX-5 <BG6> /POINTER TO NEXT BG UEND=. /END FOR THIS BG RELOC /END OF RELATIVE DEFINITIONS >
IFZERO BGMAX-6&4000 < /THE SIXTH BG: BG6, 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, 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 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, 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 > /END OF NODISK CONDITIONAL >
IFZERO .&4000 <TCBERR,XERROR /TCBP'S MUST ALWAYS BE NEGATIVE > TCBTAB, /THE TABLE OF TASK CONTROL BLOCKS "T^100+"I&3777;0;DGNTIM;0 SYSFLD;CDF+MONFLD%2;0;0 IFNDEF NODISK < "S^100+"Y&3777;0;SY;0 SYSFLD;CDF+SYSFLD%2;0;0 > "B^100+"B&3777;0;BB;0 MONFLD;CDF MONFLD%2;0;0
IFNDEF KL8E2 <TT1LST=0;KK1LST=0> "T^100+"1&3777;0;TT;TT1LST T1TCBP, MONFLD;CDF+MONFLD%2;0;0 "K^100+"1&3777;0;KK;KK1LST K1TCBP, MONFLD;CDF+MONFLD%2;0;0 IFDEF KL8E2 < "T^100+"2&3777;0;TT;TT2LST T2TCBP, MONFLD;CDF MONFLD%2;0;0 "K^100+"2&3777;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;KHIST ;BG2;MONFLD;CDF MONFLD%2;0;0 KHOBG2, 4644;0;KHO ;BG2;MONFLD;CDF MONFLD%2;0;0 EMBG2, 4644;0;EMSTRT ;BG2;MONFLD;CDF MONFLD%2;0;0 IFZERO BGMAX-3&4000 < KHIBG3, 4644;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 KHOBG4, 4644;0;KHO ;BG4;MONFLD;CDF MONFLD%2;0;0 EMBG4, 4644;0;EMSTRT ;BG4;MONFLD;CDF MONFLD%2;0;0 IFZERO BGMAX-5&4000 < KHIBG5, 4644;0;KHIST ;BG5;MONFLD;CDF MONFLD%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