File TM8ESU.PA (PAL assembler source file)

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

/TM8E SETUP (TM8ESU.PA)
/
/THIS ROUTINE IS CHAINED TO FROM THE TM8E HANDLER IF IT
/DETERMINS BLOCK 66 OF THE SYSTEM AREA IS NOT CORRECTLY SET
/WITH THE EXTENDED HANDLER FOR THE TM8E MAG TAPE.
/IT TYPES OUT A MESSAGE TO THE USER AND SETS THAT BLOCK
/CORRECTLY.  UNFORTUNATELY THE USER'S PROGRAM IS ABORTED,
/BUT THAT'S LIFE.
/
*400
	NOP
	JMS I (SYS
	  4200
	  0
	  66
	HLT
/
/
NEXT,	TAD I MSG	/OUTPUT MESSAGE
	RTR
	RTR
	RTR
	JMS OUT
	TAD I MSG
	ISZ MSG
	JMS OUT
	JMP NEXT
/
OUT,	0
	AND (77
	SNA
	JMP DONE
	TAD (-40
	SPA
	TAD (100
	TAD (240
	TLS
	TSF
	JMP .-1
	CLA
	JMP I OUT
DONE,	JMP I (7605
MSG,	.+1
	TEXT /MTA0:V-P1: SYSTEM RECONFIGURED FOR MTA0: -- TRY AGAIN!/
SYS=7607
USR=7700
PAGE

/TM8E - EXTENDED HANDLER / / FIELD 3 / THIS WILL REALLY BE EXECUTED FROM FIELD MYFLD BUT IS / ASSEMBLED IN FIELD 0 MYFLD=30 / / *** MUST BE STORED IN BLOCK 66 ON SYS: *** / /LOADED AND CALLED BY THE SYSTEM TM8E HANDLER. /DESTROYS FIELD 3 / /CALLING SEQUENCE: / CIF 30 / JMS I (TM8EEX / IF AC = -1 THEN / IF WRITE - UNPACK BUFFER / IF READ - ZERO BUFFER / IF AC = 00 THEN / IF WRITE - DO NOTHING / IF READ - PACK BUFFER / WORD -- BIT 0 = 0 (READ); 1 (WRITE) / BITS 1-5 = # PAGES IN OS/8 BUFFER / IF THIS IS ZERO AND CODE=6, THEN PACK OR / UNPACK THE # WORDS INDICATED IN ARG 3. / BITS 6-8 = FIELD OF OS/8 BUFFER / BITS 9-11= FUNCTION CODE (ONLY 6 MEANINGFUL) / CORE -- STARTING LOCATION OF OS/8 BUFFER / BLOCK-- USED ONLY TO PASS BUFFER SIZE ON FN CODE 6. / TAPBUF=400 /MAGTAPE BUFFER / *0 TM8EEX, -1 /USED BY TM8E HANDLER TO DETERMINE IF CORRECT CODE /IS LOADED HERE DCA SWITCH TAD (TAPBUF-1 DCA TBUF TAD (100 AND I TM8EEX /SPECIAL CLEARING NEEDED IF DCA PK8 / WRITING 1/2 BLOCK TAD I TM8EEX /GET WORD AND (3700 /MASK OFF # PAGES SNA JMP CKCODE RTRN1, CMA CLL DCA NKNT /IT'S NOW THE NUMBER OF 3 CHARACTER / (2 WORD) GROUPS. TBUF, 0 /AUTO REGISTER, FALL THROUGH TAD I TM8EEX AND (70 /GET FIELD TAD (CDF 0 DCA OSFLD1 TAD OSFLD1 DCA OSFLD2 TAD I TM8EEX RAL /PUT READ/WRITE BUT IN LINK CLA ISZ TM8EEX TAD I TM8EEX /GET CORE LOCATION DCA NBUFF SNL JMP READCK / IFZERO 10-TBUF&4000 <AUTOERR, XXXX> IFZERO TBUF-20&4000 <AUTOERR, YYYY>
/ THE PLAN IS TO WRITE ON THE MAGTAPE. / UNPACK THE OS8 BUFFER INTO THE TAPE BUFFER / AND THEN RETURN TO THE HANDLER TO DO THE / ACTUAL WRITE OPERATION. / ISZ SWITCH /MUST BE -1 FOR UNPACK JMP TEXIT UP1, ISZ NKNT JMP UP2 TAD PK8 /DID WE UNPAK 1/2 BLOCK? SNA JMP TEXIT /NO CMA /YES - CLEAR THE REST DCA NKNT JMP RC3 UP2, DCA PKT2 JMS UP9 /GET 1ST WORD JMS UP8 JMS UP9 /GET 2ND WORD JMS UP8 TAD PKT2 JMS UP8 JMP UP1 UP8, 0 AND (377 DCA I TBUF JMP I UP8 / UP9, 0 OSFLD1, HLT TAD I NBUFF AND (7400 RAL TAD PKT2 RTL RTL DCA PKT2 TAD I NBUFF CDF MYFLD ISZ NBUFF NOP JMP I UP9
/ READ OPERATION -- PACK THE TAPE BUFFER / INTO THE OS8 BUFFER AFTER A TAPE READ. / THIS INCLUDES MASKING OFF THE PARITY / BITS THE HARDWARE INSERTS TO MAKE THINGS / DIFFICULT FOR US. / / THIS OPERATION STARTS AT LOC. <READ>. / PK1, DCA PKT1 /SAVE 1ST CHAR OF EACH TRIPLET JMS PK8 /GO GET THE NEXT DCA PKT2 /SAVE THIS (2ND) ONE TOO JMS PK8 /AND FINALLY, GET THE THIRD OSFLD2, HLT /SET THE OS8 FIELD JMS PK9 /PACK THE FIRST OS8 WORD AND STORE IT TAD PKT2 DCA PKT1 TAD PKT3 JMS PK9 /AND ALSO THE SECOND WORD READ, ISZ NKNT /ANY MORE TO GO? SKP /YES JMP TEXIT /NO -- BUFFER FINISHED CDF MYFLD JMS PK8 /GO GET THE FIRST WORD JMP PK1 PK8, 0 /TRICK SUBROUTINE TO KEEP TRACK / OF WHICH CHARACTER WR'RE WORKING / ON AT ANY GIVEN TIME. TAD I TBUF /GET A CHARACTER FROM TAPE BUFFER AND (377 /MASK OFF PARITY BIT JMP I PK8 / / PK9, 0 /GENERATE AND SAVE ONE PACKED CHARACTER RTL RTL DCA PKT3 TAD PKT3 AND (7400 PK10, TAD PKT1 DCA I NBUFF ISZ NBUFF NOP JMP I PK9 SWITCH, PKT1, 0 PKT2, 0 PKT3, 0 NBUFF, 0 NKNT, 0 / READCK, ISZ SWITCH JMP READ CDF MYFLD JMP RC3 RC2, DCA I TBUF DCA I TBUF DCA I TBUF RC3, ISZ NKNT JMP RC2
TEXIT, CIF CDF 0 TAD NBUFF DCA I TM8EEX /RESET UPDATED BUFFER POINTER ISZ TM8EEX /BUMP TO EXIT ISZ TM8EEX JMP I TM8EEX / PAGE NOP /ALLOW DEFAULT ENTRY POINT JMP I (400 / OF 200 TO WORK. / CKCODE, TAD I TM8EEX AND (7 /MASK OFF CODE TAD (-6 SZA CLA JMP RTRN1 /NOT SIX -- RETURN FOR NULL OPERATION CLL CML RTL /2 => AC TAD TM8EEX DCA NKNT TAD I NKNT /GET ACTUAL REQUESTED BUFFER SIZE CLL CML RAR /WE NEED BUFFER 3/2 THIS SIZE TAD I NKNT CIA JMP RTRN1 /SEND IT BACK FOR USE $



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