File CAMP.PA (PAL assembler source file)

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

/3 OS8 CAMP

/
/S.R.
/
/
/CASSETTE & MAGTAPE POSITIONER		(CAMP)
/
/
/
/
/
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE VITHOUT NOTICE
/AND SHOULD NOT BE CONTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
/
/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.
/
/
/	COPYRIGHT (C) 1973, BY DIGITAL EQUIPMENT CORPORATION.
/
/
/
/

/ MUST SKIP LOCS 1000-1377 LINBUF=1000 XR1=11 XR2=12 XR3=13 *20 TEMP, 0 T, 0 T2, 0 LINPTR, 0 T3, 0 FLAG, 0 SPKNT, 0 DEVTYP, 0 /DEVICE TYPE (BITS 6-11) ENTRY, 0 /HANDLER ENTRY POINT NUM, 0 TYP, 0 /0 MEANS 'F', 1 MEANS 'R' T4, 0 DEVNUM, 0 DCW, 0 /DEVICE CONTROL WORD DCWPTR, 0 USR, 200 /POINTS TO USR ENTRY POINT ESCBIT, 0 /1 MEANS USER TYPED ALTMODE CNT, 0 CTOFLG, 0 /-1 MEANS SAW ^O COUNT, 0 / MAGTAPE SPECIAL CODES REWKOD=1 SKFKOD=3 /SKIP FORWARD FILE UNLKOD=4 EOFKOD=5 SKPKOD=2 /FORWARD RECORD BAKKOD=SKPKOD+4000 BKFKOD=SKFKOD+4000 DTLA=6766 /0000-0777 /CAMP /1000-1377 /OS/8 LINE BUFFER /1400-1777 /PS/8 LINE BUFFER /2000- /CAMP /7000-7177 /I/O BUFFER /7200-7577 /OS/8 HANDLER /7600-7777 /OS/8 DLDC=6746 DLAG=6743 PAGE
*200 START, JMS I [READ /READ A LINE INTO OS/8 LINE BUFFER TAD [LINBUF /CHAIN ENTRY ADDRESS DCA LINPTR /INITIALIZE POINTER TO LINE BUFFER STA JMS I [SPACE /IGNORE LEADING SPACES JMS GETTWO /GET TWO CHARS DCA TEMP JMS I [SCAN /SCAN PAST EXTRA LETTERS OR DIGITS TAD TEMP JMS I [BRANCH /GO TO APPROPRIATE ROUTINE -2313;SKIP /SK -0517;EOF /EO -0201;BACK /BA -2205;REWIND /RE -2516;UNLOAD /UN -2605;VERSION /VE -1005;HELP /HE 0 SNA CLA JMP I [GOAWAY JMP I [SYNTAX /NONE OF THESE /FIXES SINCE FIELD TEST RELEASE: /1. ADDED CASSETTE SUPPORT /2. FIXED BUG REIMMEDIATE ALTMOD /3. CHANGED SPECIAL CODES TO AGREE WITH NEW MAGTAPE HANDLER /4. IGNORE NULLS ON INPUT /5. ALLOW UNLOADING AN RK8E
/ GETTWO /GET TWO LETTERS OR DIGITS FROM INPUT LINE, PACK IN SIXBIT /ADVANCE PAST THEM. SUBSTITUTE NULL IF NOT FOUND. GETTWO, 0 JMS GETSIX CLL RTL RTL RTL DCA T2 JMS GETSIX TAD T2 /COMBINE JMP I GETTWO GETSIX, 0 /GET A SIXBIT LETTER OR DIGIT (OR NULL) JMS ALPHA /IS IT ALPHANUMERIC? JMP NOTALPH /NO AND [77 /YES JMP I GETSIX /TRUNCATE TO SIXBIT NOTALPH,CLA JMS BACKC JMP I GETSIX /RETURN NULL GETC, 0 /GET A CHARACTER, ADVANCE POINTER TAD I LINPTR AND [177 /ALWAYS RETURN 8-BIT SZA TAD [200 /WITH HIGH ORDER BIT ON ISZ LINPTR /ADVANCE SCAN JMP I GETC /RETURN BACKC, 0 /MOVE SCAN POINTER BACK ONE STA TAD LINPTR DCA LINPTR JMP I BACKC /RETURN
/RETURN 1 NOT OF TYPE DESIRED /RETURN 2 DESIRED TYPE /IN BOTH CASES, CHAR IS LEFT IN AC ALPHA, 0 /LOOK FOR ALPHANUMERIC JMS I [GETC JMS LETTER /IS IT A LETTER? JMP TRYDIG /NO, TRY DIGIT JMP GOTAL /YES TRYDIG, JMS DIGIT /IS IT A DIGIT? JMP I ALPHA /NO, AINT LETTER OR DIGIT GOTAL, ISZ ALPHA /YES, EITHER LETTER OR DIGIT JMP I ALPHA /RETURN WITH IT IN AC LETTER, 0 /LOOK FOR LETTER TAD (-"A CLL TAD ("A-"Z-1 SNL ISZ LETTER TAD ("Z+1 /RESTORE CHAR JMP I LETTER DIGIT, 0 /LOOK FOR DIGIT TAD (-"0 CLL TAD ("0-"9-1 /(DECIMAL) SNL ISZ DIGIT TAD ("9+1 /RESTORE DIGIT TO CHARACTER FORM JMP I DIGIT /AND RETURN WITH IT IN AC PAGE
SYNTAX, CLA JMS PRINT TEXT /? SYNTAX ERROR/ GOAWAY, TAD ESCBIT SZA CLA JMP I [7605 /LINE ENDED WITH ESCAPE TAD I [READ /WAS 'READ' EVER CALLED? SZA CLA JMP I [START /YES, GET A NEW LINE JMP I [7605 /NO, WE MUST'VE BEEN CHAINED TO, RECALL KBM PRINT, 0 TAD I PRINT RTR RTR RTR JMS PRIN TAD I PRINT JMS PRIN ISZ PRINT JMP PRINT+1 LV, JMS I [CRLF ISZ PRINT JMP I PRINT PRIN, 0 AND [77 SNA JMP LV TAD [240 AND [77 TAD [240 DCA T3 TAD [200 KRS TAD (-203 SNA JMP CTRLC TAD (203-217 /^O SNA CLA JMS CTRLO TAD T3 JMS I [TYPE JMP I PRIN
CTRLC, TAD ["^ JMS I [TYPE TAD ("C JMS I [TYPE /ECHO "^C" JMS I [DELAY JMP I [7605 /THEN GO AWAY CTRLO, 0 KCC /CLEAR OUT ^O TAD ["^ JMS I [TYPE TAD ("O JMS I [TYPE JMS I [CRLF STA DCA CTOFLG /STOP ECHOING JMP I CTRLO VERSION,JMS PRINT TEXT \OS/8 CAMP V2 \ JMP I [START NUMBIG, JMS PRINT TEXT /? NUMBER TOO BIG/ JMP I [GOAWAY NONEX, JMS PRINT TEXT /? CAN'T - DEVICE DOESN'T EXIST/ JMP I [GOAWAY PAGE
HELP, JMS I [PRINT TEXT /BACKSPACE DEV: N FILES/ JMS I [PRINT TEXT /BACKSPACE DEV: N RECORDS/ JMS I [PRINT TEXT /EOF DEV:/ JMS I [PRINT TEXT /SKIP DEV: N FILES/ JMS I [PRINT TEXT /SKIP DEV: N RECORDS/ JMS I [PRINT TEXT /SKIP DEV: EOD/
JMS I [PRINT TEXT /REWIND DEV:/ JMS I [PRINT TEXT /UNLOAD DEV:/ JMS I [PRINT TEXT /VERSION/ JMS I [PRINT TEXT /HELP/ JMP I [START
BADEV, CLA JMS I [PRINT TEXT /? CAN'T FOR THIS DEVICE/ JMP I [GOAWAY PAGE
*2000 /ORIGIN PAST OS/8 LINE BUFFER AT 1000. /SKIP PAST PS/8 LINE BUFFER (AT 1400) JUST IN CASE /PS/8 USERSS WISH TO PATCH THIS PROGRAM /SCAN PAST EXTRA LETTERS OR DIGITS SCAN, 0 JMS I [ALPHA JMP NOPE CLA JMP SCAN+1 NOPE, CLA JMS I [BACKC JMP I SCAN /SCAN PAST SPACES; GIVE ERROR IF NO SPACES FOUND UNLESS AC=-1 SPACE, 0 DCA FLAG /SET AC=-1 TO PREVENT ERROR ON NO SPACES FOUND DCA SPKNT /INITIALIZE SPACE COUNTER SKP /JUMP INTO LOOP GOTSP, ISZ SPKNT JMS I [GETC /GET NEXT CHAR TAD (-240 SNA CLA /IS IT A SPACE? JMP GOTSP /YES, COUNT IT JMS I [BACKC /NO, PUT IT BACK ISZ FLAG /CHECK FLAG SKP /USER DIDN'T SPECIFY FLAG JMP I SPACE /-0 MEANT DON'T CHECK IF FOUND SPACE TAD SPKNT /HOW MANY SPACES DID WE FIND? SZA CLA JMP I SPACE /SOME. OK JMP I (SYNTAX /NONE. TSK. TSK.
BRANCH, 0 DCA T BR2, TAD I BRANCH ISZ BRANCH SNA JMP NOTFND TAD T SNA CLA JMP FOUND ISZ BRANCH JMP BR2 FOUND, TAD I BRANCH DCA T JMP I T /FOUND ITEM IN COLUMN 1, JUMP TO ADDRESS IN COL 2 NOTFND, TAD T JMP I BRANCH /IF NOT FOUND IN COL 1, RETURN WITH AC INTACT CHECKR, 0 TAD DCW RAL SMA CLA JMP I CHECKR RONLY, JMS I [PRINT TEXT /? CAN'T - DEVICE IS READ-ONLY/ JMP I [GOAWAY CHECKW, 0 TAD DCW RTL SMA CLA JMP I CHECKW WONLY, JMS I [PRINT TEXT /? CAN'T - DEVICE IS WRITE-ONLY/ JMP I [GOAWAY PAGE
/READ A LINE INTO OS/8 LINE BUFFER READ, 0 DCA CTOFLG /ALLOW ECHOING RD1, TAD [LINBUF DCA LINPTR TAD ("# /PROMPT WITH "#" JMS TYPE DCA ESCBIT GT, JMS GET LOOK, JMS I [BRANCH -377;RUBOUT -217;GT /^O -203;CTRLC /^C -212;LF /LINE FEED -215;CR /CARRIAGE RETURN -375;ESCAPE /ALTMODE -376;ESCAPE /ALTMODE (2ND FLAVOR) -233;ESCAPE /ESCAPE -225;CTRLU /^U -200;GT /IGNORE NULLS 0 DCA TEMP /NONE OF THESE TAD LINPTR TAD (-LINBUF-377 SNA CLA /AT END OF LINE BUFFER? JMP GT /YES, DON'T ACCEPT CHAR TAD TEMP /NO, RETRIEVE CHAR JMS TYPE /ECHO IT TAD TEMP /INSERT IN BUFFER DCA I LINPTR ISZ LINPTR /BUMP POINTER JMP GT /NEXT CTRLU, TAD ["^ JMS TYPE TAD ("U JMS TYPE /ECHO "^U" <CR><LF> JMS I [CRLF JMP RD1
RUBOUT, TAD LINPTR TAD [-LINBUF SNA JMP BOL /AT BEGIN OF LINE TAD [LINBUF-1 DCA LINPTR /MOVE POINTER BACK ONE TAD ["\ JMS TYPE /ECHO "\" RUB3, TAD I LINPTR JMS TYPE /ECHO RUBBED-OUT CHARACTER GT2, JMS GET JMS I [BRANCH -377;RUB2 -216;GT2 /IGNORE ^O -203;CTRLC /^C 0 DCA TEMP /A NEW CHAR TAD ["\ JMS TYPE /ENCLOSE RUBBED-OUT CHARS IN \'S TAD TEMP JMP LOOK RUB2, TAD LINPTR TAD [-LINBUF SNA JMP BOL2 TAD [LINBUF-1 DCA LINPTR JMP RUB3 BOL2, TAD ["\ JMS TYPE BOL, JMS I [CRLF JMP RD1 ESCAPE, TAD ("$ /ECHO ESCAPE AS DOLLAR SIGN JMS TYPE ISZ ESCBIT /NOTE ESCAPE CR, DCA I LINPTR /INSERT 0 AT END JMS I [CRLF JMP I READ /RETURN, WE GOT LINE
GET, 0 KSF JMP .-1 KRB AND [177 TAD [200 /FORCE TO 8-BIT JMP I GET TYPE, 0 DCA TYPEM JMS I [DELAY DCA .-1 /DELAY FIRST TIME THRU TO LET THINGS QUIET DOWN TAD CTOFLG SZA CLA JMP I TYPE /NO ECHOING TAD TYPEM TLS TSF JMP .-1 CLA JMP I TYPE TYPEM, 0 LF, DCA I LINPTR /TEMPORARILY INSERT A 0 SENTINEL TAD [LINBUF-1 DCA XR1 JMS I [CRLF TAD ["# JMS I [TYPE LFLP, TAD I XR1 SNA JMP I [GT /FINISHED, GET SOME MORE CHARS JMS I [TYPE /ECHO CURRENT CHARS JMP LFLP PAGE
EOF, JMS I [SPACE /SPAN OVER SPACES JMS I [GETDEV /GET DEVICE JMS I [CHECKR TAD DEVTYP JMS I [BRANCH -20;MAGEOF -27;CASEOF ZBLOCK 2 0 JMP I [BADEV SKIP, JMS I [SPACE JMS I [GETDEV JMS I [CHECKW JMS GETNUM TAD DEVTYP JMS I [BRANCH -20;MAGSKP -27;CASSKP 0 JMP I [BADEV REWIND, JMS I [SPACE JMS I [GETDEV JMS I [CHECKW TAD DEVTYP JMS I [BRANCH -20;MAGREW -27;CASREW -16;TCREW / -17;LTREW ZBLOCK 4 /PATCH SPACE 0 TAD DCW SMA CLA JMP I [BADEV /NOT FILE STRUCTURED CLA IAC /READ BLOCK 0 TO REWIND DCA I [BLK TAD (100 JMS I [GO JMP I [GOAWAY
UNLOAD, JMS I [SPACE JMS I [GETDEV JMS I [CHECKW TAD DEVTYP JMS I [BRANCH -20;MAGUNL / -27;CASUNL -16;TCUNL -21;TDUNL / -17;LTUNL -23;RKEUNL ZBLOCK 2 0 JMP I [BADEV BACK, JMS I [SPACE JMS I [GETDEV JMS I [CHECKW JMS GETNUM TAD TYP SPA CLA JMP I [SYNTAX /CAN'T BACKSPACE TO EOD TAD DEVTYP JMS I [BRANCH -20;MAGBAK -27;CASBAK 0 JMP I [BADEV
GETNUM, 0 /PARSE OFF :NNNN [F ! R] OR EOD CLA IAC DCA NUM DCA TYP JMS I [GETC SNA JMP I GETNUM /EOL TAD (-": SZA CLA JMP I [SYNTAX STA JMS I [SPACE /OPTIONAL SPACES TAD I LINPTR SNA JMP I GETNUM /EOL TAD (-"E SNA CLA JMP EO JMS I [NUMBER DCA NUM STA JMS I [SPACE /MORE OPTIONAL SPACES DCA TYP JMS I [GETC SNA JMP I GETNUM /NO F OR R. F ASSUMED TAD (-"F SNA JMP R /0 MEANS 'F' TAD ("F-"R SZA CLA JMP I [SYNTAX CLA IAC /1 MEANS 'R' R, DCA TYP JMP I GETNUM EO, STA /-1 MEANS 'E' JMP R PAGE
/GET A DECIMAL NUMBER, RETURN IT IN AC NUMBER, 0 DCA NUM CLA IAC DCA FLG NM1, JMS I [GETC JMS I [DIGIT JMP EON TAD (-"0 /CONVERT TO DIGIT DCA T4 DCA FLG /NOTE PASSAGE OF A DIGIT TAD NUM AND [7000 SZA CLA JMP I [NUMBIG TAD NUM CLL RTL TAD NUM CLL RAL TAD T4 SZL JMP I [NUMBIG DCA NUM JMP NM1 EON, CLA JMS I [BACKC TAD FLG SZA DCA NUM /IF NO DIGITS, RETURN A 1 TAD NUM JMP I NUMBER FLG, 1 /0 MEANS THERE WERE DIGITS
/ GETDEV /PARSES OFF A DEVICE NAME (1-4 CHARS) /DETERMINES IF IT EXISTS /LOADS HANDLER INTO 7200-7577 IF NOT ALREADY IN CORE /SETS ENTRY POINT ADDRESS AT 'ENTRY' /SETS DEVICE NUMBER AT 'DEVNUM' /SETS DEVICE CONTROL WORD AT 'DCW' /SETS 'DEVTYP' GETDEV, 0 JMS I [GETTWO DCA WD1 JMS I [GETTWO DCA WD2 TAD WD1 TAD WD2 DCA WD1 /COMBINE TWO WORDS INTO 1 (IN WD1) TAD WD2 SNA CLA JMP INQ TAD WD1 /OS/8 KLUDGE FOR UNIQUENESS CLL RAL STL RAR /FORCE BIT 0 ON IF 2ND WORD WAS NON-ZERO DCA WD1 INQ, DCA WD2 CIF 10 JMS I USR 12 /INQUIRE WD1, 0 /DEVICE NAME WD2, 0 /GETS DEVICE NUMBER WD3, 0 /GETS ENTRY POINT JMP I [NONEX /DEVICE DOESN'T EXIST TAD WD3 SZA /IS HANDLER ALREADY IN CORE? JMP INCORE /YES TAD WD1 DCA DW1 TAD (7201 /ALLOW TWO PAGE HANDLER IN 7200 DCA DW3 DCA DW2 CIF 10 JMS I USR 1 /FETCH DW1, 0 /DEVICE NAME DW2, 0 /GETS DEVICE NUMBER DW3, 0 /GETS ENTRY POINT JMP I [NONEX /DOESN'T EXIST TAD DW2 DCA DEVNUM TAD DW3 DCA ENTRY JMP GETYP
INCORE, DCA ENTRY TAD WD2 DCA DEVNUM GETYP, TAD DEVNUM TAD (7757 DCA DCWPTR /POILT INTO DEVICE CONTROL WGRD TABLE CDF 10 TAD I DCWPTR /GET DCW CDF 0 DCA DCW TAD DCW RTR RAR AND [77 DCA DEVTYP JMP I GETDEV DELAY, 0 TAD (-10 DCA OUTER ISZ ZER JMP .-1 ISZ OUTER JMP .-3 JMP I DELAY ZER, 0 OUTER, -10 PAGE
LOADPT, TAD I (FUNCT TAD (-REWKOD SNA CLA JMP I [GOAWAY /LOAD POINT ON A REWIND IS NOT AN ERROR JMS I [PRINT TEXT /? CAN'T - AT BOT/ JMP I [GOAWAY
READEOF,JMS I [PRINT TEXT /% CAN'T - AT EOF/ JMP I [GOAWAY READBOF,JMS I [PRINT TEXT /% CAN'T - AT BOF/ JMP I [GOAWAY READBT, JMS I [PRINT TEXT /? CAN'T - AT BOT/ JMP I [GOAWAY
CASSKP, DCA I (DIR TAD TYP SNA CLA JMP CSKPF JMP I (NOTIMPL CGO, 0 DCA CFUNCT JMS I ENTRY CFUNCT, 0 CBUFR, 7000 CBLK, -1 SKP JMP I CGO DCA TEMP TAD TEMP SMA CLA JMP I (END /SOFT ERROR JMS I [PRINT TEXT \? CAN'T - I/O ERROR\ JMP I [GOAWAY CASEOF, JMS CGO JMP I [GOAWAY CASREW, TAD (REWKOD JMS CGO JMP I [GOAWAY
CSKPF, TAD NUM SNA IAC CIA DCA COUNT TAD (SKFKOD JMS CGO ISZ COUNT JMP .-3 JMP I [GOAWAY CASBAK, CLA IAC DCA I (DIR TAD TYP SZA CLA JMP CBAKBLK TAD NUM CMA DCA COUNT TAD (BKFKOD JMS CGO ISZ COUNT JMP .-3 JMP I [GOAWAY CBAKBLK,TAD NUM SNA IAC CIA DCA COUNT TAD (BAKKOD JMS CGO ISZ COUNT JMP .-3 JMP I [GOAWAY PAGE
TCREW, JMS TCR JMP I [GOAWAY TCUNL, JMS TCR TAD ENTRY IAC RTR RTR AND [7000 DTLA /SELECT ANOTHER UNIT JMP I [GOAWAY TCR, 0 TAD ENTRY TAD (-7607 SZA CLA /SYSTEM TC08 DECTAPE MUST BE UNIT 0 TAD ENTRY RTR RTR AND [7000 /ISOLATE UNIT # IN BITS 0-2 TAD (600 /GO REVERSE DTLA JMP I TCR
TDUNL, TAD (-7607 SZA CLA TAD ENTRY DCA TEMP TAD TEMP RTR RAR CLA RAR DCA UNIT TAD TEMP AND [3 CIA TAD [77 /GET DEV CODE CLL RTL RAL TAD (6004 /BUILD 'SDLC' DCA BSDLC TAD UNIT TAD (3000 /GO, REVERSE BSDLC, HLT CLA JMP I [GOAWAY UNIT, 0 CRLF, 0 TAD [215 JMS I (TYPE TAD [212 JMS I (TYPE JMP I CRLF RKEUNL, CLL TAD ENTRY TAD (200 SNL CLA TAD ENTRY AND (3 /ISOLATE UNIT CLL RAL /PUT IN PLACE TAD (2000 /WRITE PROTECT DISK DLDC /LOAD COMMAND REGISTER DLAG JMP I [GOAWAY PAGE
MAGSKP, DCA DIR TAD TYP SNA JMP SKPF SPA CLA JMP SKPEOD TAD NUM SNA CLA IAC CIA DCA WC TAD (SKPKOD JMS GO JMP I [GOAWAY MAGEOF, TAD (EOFKOD JMS GO JMP I [GOAWAY SKPF, TAD NUM SNA JMP SKP0 CIA DCA WC TAD (SKFKOD JMS GO JMP I [GOAWAY SKPEOD, JMS I ENTRY SKFKOD 0 0 /SKIP 4096 FILES SMA SKP CLA JMP CHKBOT JMP I [GOAWAY MAGBAK, CLA IAC DCA DIR TAD TYP SNA CLA JMP BAKF TAD NUM SNA CLA IAC CIA DCA WC TAD (BAKKOD JMS GO JMP I [GOAWAY
BAKF, TAD NUM CMA DCA WC2 JMS I ENTRY BKFKOD 0 WC2, -1 / SMA SKP CLA JMP CHKBOT STA DCA WC TAD (SKPKOD JMS GO JMP I [GOAWAY CHKBOT, DCA TEMP TAD TEMP AND (1000 SNA CLA JMP IOE JMP I [GOAWAY
MAGUNL, TAD (UNLKOD JMS GO JMP I [GOAWAY MAGREW, TAD (REWKOD JMS GO JMP I [GOAWAY GO, 0 DCA FUNCT JMS I ENTRY FUNCT, 0 BUFR, 7000 WC, BLK, -1 SKP /I/O ERROR JMP I GO DCA TEMP TAD TEMP SMA CLA JMP END /SOFT ERROR TAD TEMP AND (1000 SZA CLA JMP I [LOADPT IOE, TAD TEMP JMP I [IOERR DIR, 0 /0- FORWARD ; 1- BACKWARDS END, TAD TYP SNA CLA JMP I [GOAWAY /EOF OKAY ON 'F' TAD DIR /SAW FILE MARK SZA CLA JMP I [READEOF /AT END OF FILE JMP I [READBOF /AT BEGIN OF FILE
SKP0, JMS I ENTRY SKFKOD 0 /IRRELEVANT -1 /ADVANCE 1 FILE SMA SKP CLA JMP I [IOERR /HARD ERROR JMS I ENTRY BAKKOD 0 /IRREL -1 /BACK OVER FILE MARK SMA SKP CLA JMP I [IOERR JMP I [GOAWAY PAGE
IOERR, AND (3777 CLL RAL DCA TEMP JMS I [PRINT TEXT \? CAN'T - I/O ERROR\ TAD (-13 /11 BITS TO LOOK AT DCA CNT TAD (JLIST DCA JM IOLUP, TAD TEMP RAL DCA TEMP SZL JMP I JM IOCONT, ISZ JM ISZ CNT JMP IOLUP JMP I [GOAWAY JM, 0 JLIST, JMP BIT1 JMP BIT2 JMP BIT3 JMP BIT4 JMP BIT5 JMP BIT6 JMP BIT7 JMP BIT8 JMP I (BIT9 JMP I (BIT10 JMP I (BIT11
BIT1, JMS I [PRINT TEXT /(REWINDING)/ JMP IOCONT BIT2, JMS I [PRINT TEXT /(BOT)/ JMP IOCONT BIT3, JMS I [PRINT TEXT /(SELECT ERROR)/ JMP IOCONT BIT4, JMS I [PRINT TEXT /(PARITY ERROR)/ JMP IOCONT BIT5, JMS I [PRINT TEXT /(EOF)/ JMP IOCONT
BIT6, JMS I [PRINT TEXT /(RECORD LENGTH INCORRECT)/ JMP IOCONT BIT7, JMS I [PRINT TEXT /(TIMING ERROR)/ JMP IOCONT BIT8, JMS I [PRINT TEXT /(EOT)/ JMP IOCONT PAGE
BIT9, JMS I [PRINT TEXT /(WRITE LOCK-OUT)/ JMP I (IOCONT BIT10, JMS I [PRINT TEXT /(READ COMPARE ERROR)/ JMP I (IOCONT BIT11, JMS I [PRINT TEXT /(ILLEGAL FUNCTION)/ JMP I (IOCONT
NOTIMPL,JMS I [PRINT TEXT /% OPERATION NOT YET IMPLEMENTED/ JMP I [GOAWAY PAGE
FIELD 0 *200 $



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