File DISP.PA (PAL assembler source file)

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

/OS/8 HANDLER FOR KV8/I DISPLAY.
/USES TWO PAGES OF CORE AND DISPLAYS THE COMPLETE
/ASCII CHARACTER SET.(SORRY THAT BACK ARROW,% AND
/SQUARE BRACKETS ARE BAD).
/WRITTEN BY FLOOR ANTHONI, BIOMEDICAL LABS OF THE
/NATIONAL RESEARCH ORGANISATION, TNO, RYSWYK,
/HOLLAND.COMPLETED BY H. TRAENKNER,SEL STUTTGART.

/HEADER BLOCK FOR OS/8 SYSTEM

*0000
	7777		/ONE SEPARATE HANDLER
	0322		/DEVICE TYPE NAME : CR8E
	7005
	0411		/OS/8 DEVICE NAME : DIS
	2300
	1030		/DEVICE CONTROL BLOCK WORD ,
			/WRITE-ONLY DEVICE,
			/PLACE OF CARD READER HANDLER
	4000		/ENTRY POINT : NORMAL ENTRY
	0000
	0000

LOCATE=0200
*LOCATE
/THIS PAGE CONSISTS OF A NORMAL PS8 HANDLER ENTRY

DPL,	0		/ENTRY POINT
	JMP DISP+1	/BECOMES 0 AFTER THE FIRST TIME
	RDF		/PICK UP THE RETURN FIELD.
	TAD DPLCIF	/+6203
	DCA DPLXIT	/CREATE RETURN
	TAD I DPL	/FIELD OF BUFFER
	AND C70
	TAD DPLCDF+5	/+6201
	DCA DPLCDF
	CLA CLL CML RAR	/AC=4000
	TAD I DPL	/CHECK FOR READ OR WRITE
	ISZ DPL
	SPA SNA		/READ IS BAD, NUMB OF PAGES
	JMP DPLERR	/MUST BE >0
	AND C7700	/NO. OF PAGES TO WRITE
	CIA
	DCA DPLWC	/WORDCOUNT =DOUBLE PAGES
	TAD I DPL	/GET BUFFER ADDRESS
	ISZ DPL		/FOR CORRECT RETURN
	DCA DPLCA	/AND USE AS ADDRESS POINTER



/HERE COMES THE PROGRAM MAIN FRAME:UNPACK THE /CHARACTERS FROM THE BUFFER AND DISPLAY THEM. DPLGET, JMS GETBUF /PICK UP A CHAR JMS I DISP /DISPLAY TAD DPLTEM /LEFT 4 M.S.BITS AND C7400 DCA DPLTM JMS GETBUF /NEXT CHARACTER JMS I DISP TAD DPLTEM /4 L.S.BITS AND C7400 CLL RTR RTR TAD DPLTM /+4 M.S.BITS RTR RTR AND C377 JMS I DISP /AND DISPLAY ISZ DPLWC /WORDCOUNT OVERFLOW? JMP DPLGET /NOT YET DPLERR, ISZ DPL /IN CASE OF ERROR AC<0=HARD ERR. ISZ DPL DPLXIT, HLT /CDF CIF TO RETURN FIELD JMP I DPL /IN THE FOLLOWING LOCATIONS A ONCE ONLY CODE FIXES /THE INDIRECT ADDRESSES USED IN THIS PROGRAM. /FOR RELOCATABILITY. DISP, DPLDIS-DPLTEM-1 /BECOMES POINTER TO DPLDIS DPLTEM, JMS . DPLTM, TAD DISP DPLCA, TAD DPLTEM DPLWC, DCA DISP DCA DPL+1 /CLEAR THE JUMP JMS I DISP /WAIT FOR ERASE THE FIRST TIME GETBUF, JMP DPL+2 /GET A WORD FROM BUF SUBROUTINE DPLCDF, HLT /POINTS TO FIELD OF BUF TAD I DPLCA ISZ DPLCA DCA DPLTEM TAD DPLTEM AND C377 CDF 0 /HANDLERS ALWAYS IN FIELD 0 KSF /KEY STOPS OUTPUT JMP I GETBUF CLA /LEAVE INTERPRETATION TO THE JMP DPLERR /PROGRAMM/NORMAL RETURN C70, 70 DPLCIF, CDF CIF 0
/HERE COMES THE LIST WITH DISPLAYWORDS /ONE FOR EACH CHARACTER. THE TWO LS.BITS CODE FOR /THE MASK TO TAKE. LISTC=. 0000 /SPACE 2403 /! 0123 /" 5071 /# 5355 /$ 6145 /% 3171 /& 0023 /' 0110 /( 0204 /) 0374 /* 5001 /+ 6003 /, 1001 /- 2003 /. 0300 // C7700, 7700 /0,ALSO USEFUL CONSTANT 6011 /1 1731 /2 1715 /3 3405 /4 3215 /5 1375 /6 2300 /7 1775 /8 1755 /9 2203 /: 4203 /; 0700 /< 1011 /= 0414 /> 1563 /? 3771 /@ 3625 /A 3175 /B 0371 /C 7602 /D 1371 /E 1361 /F 1762 /G 1465 /H 4311 /I 7202 /J 4060 /K 0071 /L 5104 /M
5014 /N C7400, 7400 /O,ALSO USEFUL CONSTANT 1761 /P 7410 /Q 3436 /R 1355 /S 4301 /T 0475 /U 4300 /V 5210 /W 0314 /X 0304 /Y 2700 /Z 0161 /[ 0014 /BACKSLASH 0605 /] 1467 /^ 0170 /BACK ARROW C377, 377 /THIS IS THE ACTUAL DISPLAY ROUTINE WHICH CHECKS FOR /SPECIAL CHARACTERS, IGNORES NOTHING FOR HONEST DISPLAY /(CONTROL CHARS WILL BE VISUALISED), CREATES AN INTEN- /SIFY WORD AND SEARCHES THE MASKS. IT THEN HAPPENS /TO DISPLAY THE CHARACTER. *LOCATE+200 DPLDIS, 0 /ENTER WITH CHAR IN AC, 8 BIT JMP SAVE1 /FIRST TIME ONLY CODE,BECOMES SNA /CR-TEST. JMP CR /YES. IAC SNA /FF? JMP FORM /YES. SPA JMP .+4 TAD M16 SZA /CONTROL Z? JMP .+3 /NO. CLA CLL JMP I DPLDIS /YES,IGNORE LF TAD BASE1 /CREATE POINTER DCA SAVE1 /SAVE1 POINTS TO DISPLWORD OF THIS TAD I SAVE1 /CHAR. PICK IT UP AND C3 /MASK 2 BIT MASK CODE RTL CLL /MULTIPLY BY 8 RAL TAD BASE2 /CREATE POINTER TO MASKWORD DCA DPL2+4 /POINTS TO MASKWORD TAD I SAVE1 /MAKE 1 BLANK START VECTOR BIT CLL RAR DPL6, DCA SAVE1 /SAVE CONTAINS 11 INTENSIFY BITS /AND ONE GARBAGE BIT
DPL1, TAD M13 /COUNTS 5 AND A HALF MASK WORDS DCA COUNT DPL2, TAD COUNT /WHICH HALF? RAR CLL /ODD=RIGHT;EVEN=LEFT SNL CLA JMP DPL4 /LEFT HALF TAD MASK0 /INDEXED INSTRUCTION ISZ .-1 DPL3, DCA SAVE2 /CONTAINS Y1,X1,Y0,X0 TAD C6064 /INIT VOUTROUTINE DCA VOUT1 TAD SAVE2 /GET DELTA-X AND C7 TAD X JMS VOUT /LOAD X TAD SAVE2 /GET DELTA-Y RAR RTR AND C7 TAD Y JMS VOUT /LOAD Y TAD SAVE1 /GET THE INTENSIFYWORD CLL RAL /SEPARATE NEXT BIT DCA SAVE1 RAL /AC=0 OR 1 (1=INTENS.BIT) TAD C400 /SHORT VECTOR CODE JMS VOUT /DO THE VECTOR ISZ COUNT /ALL ELEVEN VECTORS DONE? JMP DPL2 /NOT YET TAD C7 /YES, MOVE X RIGHT ONE POSITION DPL7, TAD X DCA X JMP I DPLDIS /RETURN DPL4, TAD SAVE2 /FOR LEFT HALF RTR RTR RTR JMP DPL3
/ONCE ONLY CODE FOR RELOCATABILITY SAVE1, TAD DPLDIS SAVE2, TAD BASE1 COUNT, DCA BASE1 X, TAD Q Y, DCA DPLDIS+1 VOUT, JMP FORM2 /LOAD X,LOAD Y, DO VECTOR VOUT1, 6066 /INDEXED INSTR. SET TO FIRST ISZ .-1 /TIME ENTRY CLA 6071 /WAIT FOR READY FLAG JMP .-1 6072 /CLEAR HARDWARE FLAG IN CASE /OF AN EXIT FROM EDIT JMP I VOUT /SPECIAL CHARACTERS HANDLER CR, TAD Y /PAGE OVERFLOW? TAD TOP /SYMMETRIC PAGE SMA CLA JMP CR2 /NO FORM, 6071 /WAIT FOR FLAG JMP .+2 JMP FORM2+2 KSF /ANY CHARACTER TYPED,STOPS OUTPUT JMP .-4 JMP CR2 FORM2, CLA CLL CML IAC RTL /AC=6=ERASE CODE JMS VOUT /ERASE TAD TOP /MOVE Y TO TOP DCA Y CR2, TAD LEFT /MOVE X TO LEFT DCA X TAD M13 /MOVE Y 1 LINE DOWN TAD Y DCA Y JMP DPL6 /DO A DUMMY SPACE BY CLEARING THE /INTENSIFY WORD AND DOING A WILD /SET OF MASKS.
MASK0, 6000 TOP, 0464 3200 3064 3204 0060 M215, -215 BASE1, LISTC-DPLWC-11 MASK1, 6202 3430 6264 3060 C400, 0400 /ALSO USEFUL CONST. 0034 M13, -13 C7, 7 MASK2, 3402 C6064, 6064 0200 3404 3032 C3, 0003 BASE2, TAD MASK0 LEFT, -400 MASK3, 0213 2202 4242 6264 4440 0062 M16, -16 Q, TAD M215 $



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