File UTILTY.SB (8k SABR macro assembler source file)

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

/UTILITY SUBROUTINE PACKAGE               OS8 FORTRAN II LIBRARY
/
/
/
/	***	MODIFIED	**
/
/	15-JUN-77	MODIFIED FOR CENTRONIX LPT
/			USE TTY0 AS HSR.
/
/	23-JUN-77	USES BUFFERED TTY INPUT (OLD FIXIO)
/			REMOVED CARD READER INPUT
/			ADDED ASSIGNABLE DEVICE #1
/
/	15-JUL-77	ADDED ERROR TRACEBACK PROCESSING HOOKS.
/			AND IMPROVED ERROR MESSAGES.
/
/	23-NOV-77	ADDED "WRITE PAST EOF" ERROR MESSAGE.
/			ADDED "READ PAST EOF" ERROR MESSAGE.
/			ADDED "EOF" FUNCTION.
/
/	21-DEC-77	ADDED READING FROM BATCH INPUT STREAM
/
/	09-FEB-77	EXPANDED TO 8 UNITS (IOH ALSO CHANGED)
/			UNITS 4-8 USE EXPANDED RESIDENT I/O
/			REMOVED "EOF" (USE "IOHST")
/
/	24-JUL-81	CHANGE FIXIO.  SUPPORT NON-BUFFERED
/			CONSOLE (UNIT 1) INPUT.
/
/	05-NOV-81	CHANGE FATAL ERROR TO CALL EXIT INSTEAD
/			OF BRANCHING DIRECTLY TO IT.
/
/	03-DEC-81	BATCH INPUT CHECKS ONLY COL. 1 FOR '$',
/			CONDITIONAL LPT CHECK ADDED TO CKIO,
/			FIXIO(-X) CALLS CHANGED TO MASK FORMAT:
/			X=1,2 IS EDIT MODE, X=4 IS NO BATCH.
/
/	30-DEC-81	FIX BUG INTRODUCED IN CONSOLE/BATCH INPUT.
/
/	10-FEB-82	DIAG.SV CAN RETURN IF ERROR WAS FATAL
/
/
/COPYRIGHT  (C)  1974 BY DIGITAL EQUIPMENT CORPORATION
/
/
/
/
/
/
/
/
/
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
/FOR ANY ERRORS THAT MAY APPEAR IN THIS MANUAL.
/
/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
/
/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
/DIGITAL.
/
/
/
/
/
/
/
/
/
/

/ VERSION UTILTY.V07 (OCTOBER 26,1971) / VERSION NUMBER IS AVAILABLE AT ENTRY POINTS / ENTRY OPEN /INITIALIZING AND FLAG SETTING ROUTINE ENTRY GENIO ENTRY EXIT /EXIT TO DISK MONITOR SYSTEM ENTRY ERROR ENTRY CKIO /USELESS ROUTINE ABSYM T 7 /UNIVERSAL TEMPORARY ABSYM X0 10 ABSYM X1 11 ABSYM X2 12 ABSYM X3 13 ABSYM X4 14 ABSYM X5 15 ABSYM X6 16 ABSYM X7 17 ABSYM CDFUS 34 ABSYM UNITNO 115 ABSYM UBASE 116 ABSYM XREADU 75 ABSYM XWRITU 76 ABSYM UTABLE 77 OPDEF KRS 6034 OPDEF KCC 6032 OPDEF ANDI 0400 OPDEF TADI 1400 OPDEF DCAI 3400 OPDEF JMSI 4400 OPDEF JMPI 5400 OPDEF CDF0 6201 OPDEF CIF0 6202 OPDEF CDIF0 6203 OPDEF CIF1 6212 OPDEF CDF1 6211 /LINE PRINTER IOT'S OPDEF LLB 6666 OPDEF LSF 6661 LAP /WE KNOW WHAT WE ARE DOING, DON'T WE? U17, 17 /*** MUST BE FIRST LOC IN PAGE *** IOER, TEXT "IOER" / ERROR MESSAGE GENIO, 7;0 DCA T /SAVE ENTRY AC TAD T CLL RAL CLL RTL RTL AND U17 IAC DCA UNITNO /IN CASE OF GENIN/GENOUT TAD T RTL RTL RAL U200, AND U17 TAD JMPITB DCA DSPACH /INDEX JUMP TABLE BY DEVICE NUMBER GENLP, TAD U200 KRS1, KRS TAD (-203 SNA CLA KSF1, KSF /CHECK FOR ^C ON TELETYPE DSPACH, NOP /NO ^C - DISPATCH TO I/O ROUTINE SYS, CALL 0,EXIT JMPITB, JMPI DEVTAB DEVTAB, TTYOUT HSPOUT LPTOUT GENOUT GENOUT GENOUT GENOUT GENOUT TTYIN HSRIN ILLDEV GENIN GENIN GENIN GENIN GENIN BATCH, 0 /GET A BATCH CHARACTER (IF POSSIBLE) CLA CLL IAC RTL /AC = 4 AND MODE1 CDF0 SNA CLA /SKIP IF NO BATCH WANTED TADI BATFLG AND (2002 CLL RTR /RUN FLG IN AC, $ FLG IN LINK SNA SZL CLA /SKIP IF BATCH RUNNING AND NO $ JMP NOBAT TADI BATFLG /GO GET A CHAR AND (70 TAD (6202 /MAKE A CIF TO BATCH DCA CIFF CIFF, HLT /CIF BATCH JMS I BATGET /GET A BATCH CHAR JMP NOBAT /NO MORE BATCH CHARS TAD (-212 SNA JMP BAT30 /IF LF, EOL ISZ BATEOL JMP BAT20 /NOT 1ST COL. TAD (-32 /(212-"$") SNA JMP DOLABT /IF '$' IN COLUMN 1 TAD (32 BAT20, TAD (212 /RESTORE CHAR JMP I BATCH BAT30, STA DCA BATEOL /LF SETS EOL FLAG JMP CIFF /GET NEXT CHAR DOLABT, CDF0 CLL STA RTL /AC = 7775 ANDI BATFLG TAD (2 /FORCE BIT 10 ON DCAI BATFLG NOBAT, INC BATCH /NO BATCH CHAR, RETURN TO CALL+2 JMP I BATCH BATEOL, -1 BATFLG, 7777 BATGET, 5400 HSPOUT, PSF JMP GENLP TAD T PLS GENRTN, CLA GENRT, RETRN GENIO HSRIN, RSF JMP GENLP RRB RFC JMP GENRT PAGE TYPE, 0 TAD T JMS TYPEC JMPI TYPE GENIN, CIF0 JMS I XREADU /READ FROM UNIT JMP SOFTER /SOFTWARE READ ERROR JMP HARDER /HARDWARE READ ERROR AND (377 /KEEP ONLY ONE CHARACTER JMP GENRT GENOUT, CIF0 TAD T AND (377 JMS I XWRITU /WRITE TO UNIT JMP SOFTER /SOFTWARE WRITE ERROR JMP HARDER /HARDWARE WRITE ERROR JMP GENRT / / INITIALIZING SUBROUTINE CALLED BY FORTRAN / CLEARS FLOATING AC AND SETS FLAGS / TEXT '?GENIO' OPEN, 7;0 STA /SEND A RUBOUT TO INITIALIZE THINGS TLS1, TLS LLB /INITIALIZE LPT PLS RFC KCC1, KCC /CLEAR KEYBOARD FLAG (AND AC) CALL 0,CLEAR TAD (7410 /SKP INSTRUCTION DCA CKIOLP /DISABLE CKIO LPT CHECK STA DCA TTYCL /CLEAR SOFTWARE BUFFER IAC /CLEAR OUT UNIT TABLE FLAGS AND PTGS DCA UNITNO /START WITH UNIT 1 CLUPP, CDF0 TAD UNITNO TAD UTABLE DCA UBASE TADI UBASE SNA JMP CLUPP1 /NO PACKET - TABLE ENTRY WAS 0 DCA UBASE DCAI UBASE /CLEAR FLAG WORD INC UBASE DCAI UBASE /CLEAR PTG WORD CLUPP1, INC UNITNO TAD UNITNO TAD (-11 /FINISHED UNIT 8 YET? SPA CLA /SKIP IF SO JMP CLUPP /CLEAR OUT NEXT FLAG AND PTG TAD CDFUS /SET UNKNOWN ROUTINE TRAP TO US IAC /MAKE CIF DCAI (535 /'NOTIN,' TAD (5740 /'JMP I 540' DCAI (536 TAD TRPP /--> TO OUR TRAP DCAI (540 RETRN OPEN TRPP, UNKTRP /TRAP UNKNOWN ROUTINES 7610;1 /FAKE LINE # FOR ERROR TRACEBACK UNKTRP, TADI (55 /GET FIELD OF BAD CALL DCA CDFC TADI (33 DCA ADCC /AND ADDR OF CALL CALL 1,ERROR /NOW FAKE AN ERROR ARG UNSAT UNSAT, TEXT "UNKE" CDFC, 0 ADCC, 0 SOFTER, TAD UNITNO TAD UTABLE DCA UBASE CDF0 TADI UBASE SNA JMP UER DCA UBASE CLA CLL CML RAR AND T SNA CLL CML RTR /WRITE BIT ANDI UBASE /TEST R/W BITS SNA CLA JMP OER /NOTHING WAS OPEN JMP QER /END OF FILE ILLDEV, UER, TAD (4 QER, IAC HARDER, IAC OER, TAD (1117 /'IO' (OR 'IP' 'IQ' 'IU') DCA IOER TAD T SMA CLA TAD (600 /'OO' (OR 'OP' 'OQ' 'OU') TAD IOER DCA IOER CALL 1,ERROR /NOW SEND ERROR OUT ARG IOER /FATAL ERROR TTYOUT, JMS TYPE JMP GENRT PAGE
LOC, 2525 AC, 2525 MESG, TEXT "#### ERROR AT LOC " C0007, 0007 /USED TO END MESSAGE PMESG, MESG ERROR, 7;0 U7600, 7600 TAD ERROR DCA TEM1 TEM1, NOP /SET DATA FIELD OF "CALL ERROR" TADI ERROR# DCA TEM3 INC ERROR# E60, CLA CMA CML /CML IS WINDOW DRESSING TADI ERROR# DCA X0 INC ERROR# TEM3, NOP /DATA FIELD OF MESSAGE&ENTRY POINT DCA CKIO /ZERO "FATAL ERROR" FLAG TADI X0 RAL SZL /NON-FATAL BIT ON? ISZ CKIO /YES - SET "FATAL FLAG" TO NON-FATAL CLL RAR /STRIP NON-FATAL BIT FROM MESSAGE DCA MESG TADI X0 /SECOND WORD OF MESSAGE DCA MESG# TADI X0 DCA TEM1 TADI X0 DCA TEM3 /CALLING ADDRESS TAD PMESG DCA TEM2 JMS DIAGGO /CHECK FOR DIAGNOSTIC PROGRAM ERLP, TAD I TEM2 RTR RTR RTR JMS PR6BIT TAD I TEM2 JMS PR6BIT INC TEM2 JMP ERLP PRLOC, TAD TEM1 RTR RTR JMS ERTTY /PRINT CALLING FIELD TAD (-4 DCA TEM2 NUMLP, TAD TEM3 RTL RAL DCA TEM3 TAD TEM3 JMS ERTTY ISZ TEM2 JMP NUMLP TAD (215 DCA T JMS TYPE CLA CLL CMA RTL JMS TYPE CDRTN, /RETURN FROM DIAGGO TAD CKIO /GET THE FATAL ERROR FLAG SPA SNA CLA /WHADDOWEDO?? JMP SYS /EXIT TO OS/8 IF FATAL RETRN ERROR /HE SAYS ITS NON-FATAL - LET HIM HANDLE IT ERTTY, 0 /DIGIT PRINTING ROUTINE RAL AND C0007 TAD E60 JMS PR6BIT JMP I ERTTY / /EXIT TO DISK MONITOR SYSTEM / EXIT, 7;0 CALL 0,CKIO CDIF0 JMPI U7600 /RETURN TO MONITOR CKIO, 7 TEM2, 0 /DUMMY SUBROUTINE TO WAIT FOR I/O COMPLETE TSF1, CKWAIT, TSF JMP CKWAIT CKIOLP, SKP JMP CKIOLP /WAIT FOR LPT (MAYBE) RETRN CKIO TWIDDL, 0 /PLAY NICE PATTERN IN AC TAD AC /GET NICE PATTERN KLOOP, ISZ LOC ISZ LOC /WASTE SOME TIME ISZ LOC ISZ LOC ISZ LOC ISZ LOC ISZ LOC JMP KLOOP1 /NOT DONE YET CLL CMA RAL SNL IAC /NEW BIT IN DCA LOC TAD LOC KLOOP1, KSF2, KSF JMP KLOOP DCA AC JMP I TWIDDL PAGE ABSYM BASE 3000 /START OF DIAG CODE ABSYM SCRAT 27 /SCRATCH BLOCK DIAGGO, 0 /CHECK FOR DIAG.SV NOTRC, SKP JMP RET /IF FILE NOT FOUND KLU, SKP /ZAPPED AFTER FIRST TIME JMP NOLUK DCA KLU CDF1 /CHECK FOR OS/8 AROUND TADI (7647 /SYSTEM HANDLER IN MEMORY? TAD (-7607 SZA CLA JMP NODIAG /NO, SET SHORT MESSAGES INC RETFL /CHANGE CDF TO CIF JMS MOVMEM LUKCOD /LOOKUP CODE -15 /LENGTH CLA IAC /LOOKUP ON SYS: CDIF0 /GO TO CODE LUKRTN, JMPI ZER /IN FIELD 0 SZA CLA JMP NODIAG /IF NOT FOUND TADI (3 /BLOCK # IAC /SKIP CCB DCA RBLK /PLACE IN READ CALL NOLUK, CIF0 JMS I SYSHP /WRITE OUT MEM. 5200 /12 PAGES BASE /FROM BASE SCRAT /TO USR SCRATCH BLOCKS JMP NODIAG /IF I/O ERROR TAD I SVLPF /CHANGE 0 FATAL ERR FLAG TO -1 SNA SPA STA /TO SIGNAL NEW DIAG.SV TO RETURN DCA I SVLPF /(OLD DIAG EXITS TO 7600 ON FATAL ERR) TAD SVLP /POINT TO SAVE LIST DCA X7 TAD RDLP /POINT TO READIN CODE DCA X6 MII, TAD I X7 SNA JMP MIIE / END OF SAVE LIST DCA DIAGGO TAD I DIAGGO /GET CONTENTS DCA I X6 /PLACE IN DESTINATION LIST JMP MII /LOOP MIIE, JMS MOVMEM /MOVE IN READIN CODE RDCOD /READIN CODE -16 /LENGTH CDIF0 JMPI ZER /GO READIN DIAG NODIAG, DCA NOTRC /ZAPP INPUT IF NO FILE RET, JMP I DIAGGO /RETURN, NO FILE SVLP, SVLP /MUST BE BEFORE LIST!! MESG /SAVE LIST IS MSG1 MESG# /MSG2 SVLPF, CKIO /FATAL FLAG TEM1 /ERROR FIELD TEM3 /ERROR ADDRESS MII /OUR CDF CDP /OUR RETURN ADDRESS ZER, 0 /END OF LIST CDP, CDRTN LUKCOD, CIF1 JMSI 4 /1 2 /2 (LOOKUP) 11 /--> FNAME 7700 /4 (USR LOC) STA /5 ERROR RETURN RETFL, JMP I 10 /6 & 7 LUKRTN /10 (AUTO-BUMPED) TEXT "DIAG@@SV" / /11..14 (FILE NAME) RDCOD, JMSI 4 /0 (CALL HANDLER) 1200 /1 (READ IN 12 PAGES) BASE /2 (TO 'BASE') RBLK, 0 /3 (FROM DIAG) SYSHP, 7607 /4 (SYSTEM HANDLER PLACE) JMPI 6 /5 JUMP INTO DIAG RDLSP, BASE# /AT ENTRY POINT BLOCK 7 /ERROR MESSAGE RDLP, RDLSP /POINTS TO ERROR INFO MOVMEM, 0 /MOVE (CALL+1) TO 00000 STA TAD I MOVMEM INC MOVMEM DCA X7 STA DCA X6 TAD I MOVMEM INC MOVMEM DCA WRDC /WORD COUNT MOVML, TAD I X7 CDF0 DCAI X6 ISZ WRDC /DONE? JMP MOVML /NO JMP I MOVMEM WRDC, PR6BIT, 0 /6BIT TO 8BIT CONVERTOR AND (77 SNA JMP PRLOC /MESSAGE OVER TAD (240 AND (77 TAD (240 CALL 0,GENIO /LOOK FOR ^C WHILE TYPING JMP I PR6BIT PAGE
/ TTYIN - UNIT 1 INPUT ROUTINE K177, 177 /** MUST BE FIRST LOC ON PAGE ** KBUFP, KBUF /--> TO KBD BUFFER KBP, 0 /NEXT OPEN SLOT IN KBUF TTYCL, -1 /-#OF CHARS LEFT MODE1, 1 /UNIT 1 I/O MODE FROM FIXIO CALL KBEND, KBUFE /END OF KBD BUFFER ERRORL, ERROR TTYIN, TAD MODE1 CMA RTR /PUT EDIT MODE IN LINK AND SIGN SZL SPA CLA /SKIP IF NO BUFFERING JMP TTYIN1 /IF BUFFERED INPUT JMS TTYSUB /GET NON-BUFFERED UNIT 1 CHAR DCA TTYSUB /SAVE IT TAD TTYSUB JMS TYPEC /ECHO IT TAD TTYSUB JMP GENRT /AND RETURN TTYIN1, TADI ERRORL /HAS ERROR BEEN CALLED? SZA CLA JMP TTYRS /YES, GET NEW LINE ISZ TTYCL /NO, ANY CHARS LEFT? JMP TTYGNC /YES, GO GET ONE TTYRS, JMS PROMPT /NO, PROMPT FOR NEW LINE TTYRP, TAD KBUFP /RESET BUFFER POINTER DCA KBP DCAI ERRORL /CLEAR ERROR FLAG TTYKLP, JMS TTYSUB /GET UNIT 1 CHAR TAD (-212 /LINE FEED? SNA JMP TTYRTY /YES, RETYPE LINE TAD (-3 /CR? SNA JMP TTYCR /YES, END PROCESSING TAD (-10 /^U? SNA JMP TTYCU /YES, NEW LINE TAD (-152 /RUBOUT? SNA JMP TTYRBO /YES, ERASE ONE CHAR TAD (377 /RESTORE CHAR JMS PACK /PLACE CHAR IN BUFFER AND ECHO JMP TTYKLP /GET MORE CHARS TTYGNC, TADI KBP INC KBP JMP GENRT /RETURN WITH CHAR IN AC TTYCU, JMS CRLF JMP TTYRS TTYCR, JMS CRLF /START NEW LINE TAD (215 /PLACE CR IN BUFFER DCAI KBP INC KBP TAD (212 DCAI KBP TAD KBP /COMPUTE INPUT LENGTH CMA TAD KBUFP DCA TTYCL TAD KBUFP /START AT BEGINNING OF STRING DCA KBP JMP TTYIN TTYRTY, TAD KBUFP /SET START DCA T JMS CRLF JMS PROMPT /REPEAT PROMPT TTYRT, TAD T /END OF LINE? CIA TAD KBP SNA CLA JMP TTYKLP /YES, QUIT ECHOING TADI T /NO, ECHO CHAR JMS TYPEC INC T JMP TTYRT /LOOP TTYRBO, TAD KBP CIA TAD KBUFP SNA CLA /EMPTY BUFFER? JMP TTYKLP /YES, DO NOTHING STA TAD KBP DCA KBP CLL IAC RAL /AC = 2 AND MODE1 JMP TTYBCK TTYSUB, 0 /GET CHAR FROM TTY OR BATCH JMS BATCH JMP BATGOT /GOT ONE BATCH CHAR JMS TWIDDL /WAIT FOR KBD KRS2, KRS /CHECK FOR ^C AND K177 TAD (-03 SNA CLA JMP SYS /IF ^C KRB1, KRB /CLEAR AC - FETCH THE CHAR BATGOT, K200, AND K177 TAD K200 JMPI TTYSUB CRLF, 0 /START NEW LINE TAD (215 JMS TYPEC TAD (212 JMS TYPEC JMPI CRLF PACK, 0 /PLACE CHAR IN BUFFER, ECHO DCAI KBP TAD KBP /END OF BUFFER? CIA TAD KBEND SPA CLA JMPI PACK /YES, DON'T ECHO OR BUMP POINTER TADI KBP JMS TYPEC /ECHO TO PROPER TERMINAL INC KBP /NO, BUMP POINTER JMPI PACK /RETURN PAGE TTYBCK, SZA CLA JMP TTYBC1 /IF TTY MODE TAD KCH210 JMS TYPEC TAD KCH240 JMS TYPEC TAD (-124 /(210-334 /(BS-"\ TTYBC1, TAD ("\ JMS TYPEC JMP TTYKLP PROMPT, 0 /PRINT PROMPT CHAR SEQUENCE KCH240, STA TAD PRA /SET PROMPT START KCH210, DCA X0 PRF, TAD I X0 /**CDF** PRF1, NOP /GETS CDF US IF FIXIO CALLED SNA JMPI PROMPT /END OF PROMPT JMS TYPEC /PRINT PROMPT CHARACTER JMP PRF /CONTINUE PROMPTING PRA, PRMESS /--> PROMPT MESSAGE PRMESS, "-;">;0 /DEFAULT PROMPT IS "->" KBUF, BLOCK 120 /80 CHAR KBD BUFFER KBUFE, 0 /END OF BUFFER 0;0 /ROOM FOR FORCED CR-LF TYPEC, 0 TSF2, TSF JMP TSF2 /WAIT FOR TTY TLS2, TLS K7600, 7600/CLA KSF3, KSF /KEY HIT? TYPR, JMPI TYPEC /NO, DON'T DO ANYTHING FANCY TAD K7600 KRS3, KRS TAD (-7623 / ^S? SZA CLA JMP TYPR /NO, IGNORE AND CONTINUE JMS TWIDDL /YES, TWIDDLE FOR A WHILE JMP KSF3 /THEN LOOK AGAIN PAGE
//////////////////////////////////////////////////////////////// / / FIXIO : MODIFY UNIT #1 PARAMETERS / / CALL FIXIO : (NO EFFECT) / CALL FIXIO(-X) : SET CONSOLE MODE / BIT 9 : INHIBIT BATCH INPUT / BIT 10 : TTY MODE (RUBOUT TYPES BACKSLASH) / BIT 11 : CRT MODE (RUBOUT TYPES BS-SPACE-BS) / BITS 10,11 BOTH 1 : NO BUFFERING/EDITTING / (E.G. FIXIO(-7) = NO BUFFERING, NO BATCH) / CALL FIXIO(0) : DEFINE NULL INPUT PROMPT / CALL FIXIO(STR) : SET ARRAY OF EIGHT BIT CHARS / ENDING WITH 0 AS INPUT PROMPT / CALL FIXIO(I, J) : SET 'I' AS KEYBOARD DEVICE, / 'J' AS PRINTER DEVICE / //////////////////////////////////////////////////////////////// ENTRY FIXIO F, FIXIO, BLOCK 2 STA TAD F# DCA T /CHECK # OF PARAMETERS TAD F DCA FL FL, HLT TADI T /GET ARG WORD AND (7600 /ISOLATE # OF ARGS TAD (-200 /ONE ARG? SNA JMP ERPRO /YES, SET ERASE MODE (OR PROMPT) SMA CLA JMP DEVC / > 1 ARG. ASSUME 2 FXXR, RETRN FIXIO ERPRO, JMS IARG /GET AN ARG SMA JMP FIXPRM /IF PROMPT CHANGE REQUEST CIA DCA MODE1 /MODE CHANGE REQUEST JMP FXXR FIXPRM, CLA TAD PF DCA PRF /SET PROMPT FIELD TAD CDFUS DCA PRF1 /MOVE IN CDF TO RESTORE FIELD TAD FL1 DCA PRA /SET ADDRESS TOO. JMP FXXR /RETURN DEVC, JMS CONV /DEVICE CHANGE.. CONVERT KBD CODES KCC0 KCC1 KRS1 KRS2 KRS3 KRB1 KSF1 KSF2 KSF3 0 JMS CONV TLS0 TLS1 TLS2 TSF1 TSF2 0 KCC0, KCC /INITIALIZE NEW DEVICES TLS0, TLS JMP FXXR /RETURN CONV, 0 /CONVERT DEVICE CODES TO ARG. JMS IARG /GET FTN. ARG AND C77 CLL RAL /POSITION CODE RTL DCA FL1 /NEW CODE CONN, TAD I CONV /GET ADDR TO CONVERT INC CONV SNA JMP I CONV /LIST COMPLETE DCA T TAD I T /GET WORD AND (7007 /ISOLATE FUNCTION TAD FL1 /ADD IN NEW CODE DCA I T /REPLACE BACK JMP CONN /CONTINUE CONVERSIONS C77, 0077 IARG, 0 /GET INTEGER ARGUMENT TAD F DCA FL1 /GO TO PARAM FIELD FL1, HLT TADI F# /GET PARAM FIELD INC F# DCA PF TADI F# INC F# /GET PARAM ADDR DCA FL1 PF, HLT TADI FL1 /GET ARG JMP I IARG /RETURN ARG PFSTCH, -1 LPTOUT, LPTLSF, LSF JMP GENLP TAD T ISZ PFSTCH JMP NOFST TAD (-1260 /LOOK FOR CONTROL CHARS IN PRINT POSITION 1 CLL RAR SZA JMP DCACH CLA RTL TAD (212 NOFST, LLB CLA /IF NON-CENTRONIX PRINTER! TAD T TAD (-1212 DCACH, SNA CLA /IF LINE FEED CMA /SET "FIRST CHAR" SWITCH ON DCA PFSTCH TAD LPTLSF DCA CKIOLP /ENABLE CKIO LPT CHECK JMP GENRT END



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