/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 $