7 /CASSETTE & MAGTAPE POSITIONER (CAMP)
14 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE VITHOUT NOTICE
15 /AND SHOULD NOT BE CONTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
16 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
17 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
19 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
20 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
21 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
22 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
24 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
25 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
29 / COPYRIGHT (C) 1973,1975,1977 BY DIGITAL EQUIPMENT CORPORATION.
35 / MUST SKIP LOCS 1000-1377
52 DEVTYP, 0 /DEVICE TYPE (BITS 6-11)
53 ENTRY, 0 /HANDLER ENTRY POINT
55 TYP, 0 /0 MEANS 'F', 1 MEANS 'R'
58 DCW, 0 /DEVICE CONTROL WORD
60 USR, 200 /POINTS TO USR ENTRY POINT
61 ESCBIT, 0 /1 MEANS USER TYPED ALTMODE
63 CTOFLG, 0 /-1 MEANS SAW ^O
66 DHIT, 0 /DEVICE HANDLER INFO TABLE - 1
67 DHI, 0 /DEVICE HANDLER INFO
68 DBLK, 0 /DEVICE HANDLER BLOCK
69 VNOPTR, 0 /PTS TO VERSION # IN HANDLER
70 VNO, 0 /CURRENT HANDLER VERSION NUMBER
73 FLG, 1 /1 MEANS SAW NO DIGITS
78 / MAGTAPE SPECIAL CODES
81 SKFKOD=3 /SKIP FORWARD FILE
84 SKPKOD=2 /FORWARD RECORD
91 /1000-1377 /OS/8 LINE BUFFER
92 /1400-1777 /PS/8 LINE BUFFER
94 /7000-7177 /I/O BUFFER
95 /7200-7577 /OS/8 HANDLER
107 JMS I [READ /READ A LINE INTO OS/8 LINE BUFFER
108 CHN, TAD [LINBUF /CHAIN ENTRY ADDRESS
109 DCA LINPTR /INITIALIZE POINTER TO LINE BUFFER
111 JMS I [SPACE /IGNORE LEADING SPACES
112 JMS GETTWO /GET TWO CHARS
114 JMS I [SCAN /SCAN PAST EXTRA LETTERS OR DIGITS
116 JMS I [BRANCH /GO TO APPROPRIATE ROUTINE
130 JMP I [SYNTAX /NONE OF THESE
133 /FIXES SINCE FIELD TEST RELEASE:
135 /1. ADDED CASSETTE SUPPORT
136 /2. FIXED BUG RE IMMEDIATE ALTMOD
137 /3. CHANGED SPECIAL CODES TO AGREE WITH NEW MAGTAPE HANDLER
138 /4. IGNORE NULLS ON INPUT
139 /5. ALLOW UNLOADING AN RK8E
143 /1. SET COMMAND IMPLEMENTED
145 /MAINTENANCE RELEASE CHANGES:
147 /1. TOOK OUT 'SET' SINCE WE DON'T WANT TO SUPPORT IT
149 /2. FIXED BUG RE AT EOF AND BOF MESSAGES
150 /3. CHANGED CAMP TO USE NEW TM8E HANDLER
151 / NOTE: CAMP WILL NOT WORK PROPERLY WITH
152 / TM8E HANDLERS PRIOR TO VERSION F
153 /4. PROPERLY FIND EOT EVEN IF WE'RE JUST
154 / BEFORE A FILE MARK.
155 /5. GIVE AT BOT OR EOT MESSAGE IF SEE REFLECTIVE SPOT
156 /6. CHANGED VERSION NUMBER TO V4
157 /7. ENSURE THAT USER CAN'T PASS OVER EOD
161 /1. FIXED BUG WITH UNLOADING RKS
164 /GET TWO LETTERS OR DIGITS FROM INPUT LINE, PACK IN SIXBIT
165 /ADVANCE PAST THEM. SUBSTITUTE NULL IF NOT FOUND.
177 GETSIX, 0 /GET A SIXBIT LETTER OR DIGIT (OR NULL)
178 JMS ALPHA /IS IT ALPHANUMERIC?
181 JMP I GETSIX /TRUNCATE TO SIXBIT
184 JMP I GETSIX /RETURN NULL
186 GETC, 0 /GET A CHARACTER, ADVANCE POINTER
188 AND [177 /ALWAYS RETURN 8-BIT
190 TAD [200 /WITH HIGH ORDER BIT ON
191 ISZ LINPTR /ADVANCE SCAN
194 BACKC, 0 /MOVE SCAN POINTER BACK ONE
199 \f/RETURN 1 NOT OF TYPE DESIRED
200 /RETURN 2 DESIRED TYPE
201 /IN BOTH CASES, CHAR IS LEFT IN AC
203 ALPHA, 0 /LOOK FOR ALPHANUMERIC
205 JMS LETTER /IS IT A LETTER?
206 JMP TRYDIG /NO, TRY DIGIT
208 TRYDIG, JMS DIGIT /IS IT A DIGIT?
209 JMP I ALPHA /NO, AINT LETTER OR DIGIT
210 GOTAL, ISZ ALPHA /YES, EITHER LETTER OR DIGIT
211 JMP I ALPHA /RETURN WITH IT IN AC
213 LETTER, 0 /LOOK FOR LETTER
219 TAD ("Z+1 /RESTORE CHAR
222 DIGIT, 0 /LOOK FOR DIGIT
225 TAD ("0-"9-1 /(DECIMAL)
228 TAD ("9+1 /RESTORE DIGIT TO CHARACTER FORM
229 JMP I DIGIT /AND RETURN WITH IT IN AC
233 TEXT /? SYNTAX ERROR/
236 JMP I [7605 /LINE ENDED WITH ESCAPE
237 TAD I [READ /WAS 'READ' EVER CALLED?
239 JMP I [START /YES, GET A NEW LINE
240 JMP I [7605 /NO, WE MUST'VE BEEN CHAINED TO, RECALL KBM
278 JMS I [TYPE /ECHO "^C"
280 JMP I [7600 /THEN GO AWAY
289 DCA CTOFLG /STOP ECHOING
296 TEXT /? NUMBER TOO BIG/
299 TEXT /? CAN'T - DEVICE DOESN'T EXIST/
303 TEXT \? I/O ERROR ON SYS:\
307 TEXT /BACKSPACE DEV: N FILES/
309 TEXT /BACKSPACE DEV: N RECORDS/
312 H2, JMP H1 / JMS I [PRINT
313 TEXT /SET DEV: [NO] ATTRIB [N]/
315 TEXT /SKIP DEV: N FILES/
317 TEXT /SKIP DEV: N RECORDS/
331 TEXT /? CAN'T FOR THIS DEVICE/
342 /ORIGIN PAST OS/8 LINE BUFFER AT 1000.
343 /SKIP PAST PS/8 LINE BUFFER (AT 1400) JUST IN CASE
344 /PS/8 USERS WISH TO PATCH THIS PROGRAM
346 /SCAN PAST EXTRA LETTERS OR DIGITS
357 /SCAN PAST SPACES; GIVE ERROR IF NO SPACES FOUND UNLESS AC=-1
360 DCA FLAG /SET AC=-1 TO PREVENT ERROR ON NO SPACES FOUND
361 DCA SPKNT /INITIALIZE SPACE COUNTER
364 JMS I [GETC /GET NEXT CHAR
366 SNA CLA /IS IT A SPACE?
367 JMP GOTSP /YES, COUNT IT
368 JMS I [BACKC /NO, PUT IT BACK
370 SKP /USER DIDN'T SPECIFY FLAG
371 JMP I SPACE /-0 MEANT DON'T CHECK IF FOUND SPACE
372 TAD SPKNT /HOW MANY SPACES DID WE FIND?
374 JMP I SPACE /SOME. OK
375 JMP I [SYNTAX /NONE. TSK. TSK.
390 JMP I T /FOUND ITEM IN COLUMN 1, JUMP TO ADDRESS IN COL 2
393 JMP I BRANCH /IF NOT FOUND IN COL 1, RETURN WITH AC INTACT
400 TEXT /? CAN'T - DEVICE IS READ-ONLY/
408 TEXT /? CAN'T - DEVICE IS WRITE-ONLY/
415 TAD (-"0-10 /CONVERT TO DIGIT
437 \f/READ A LINE INTO OS/8 LINE BUFFER
440 DCA CTOFLG /ALLOW ECHOING
450 -215;CR /CARRIAGE RETURN
452 -376;ESCAPE /ALTMODE (2ND FLAVOR)
455 -200;GT /IGNORE NULLS
457 DCA TEMP /NONE OF THESE
460 SNA CLA /AT END OF LINE BUFFER?
461 JMP GT /YES, DON'T ACCEPT CHAR
462 TAD TEMP /NO, RETRIEVE CHAR
464 TAD TEMP /INSERT IN BUFFER
466 ISZ LINPTR /BUMP POINTER
472 JMS TYPE /ECHO "^U" <CR><LF>
478 JMP BOL /AT BEGIN OF LINE
480 DCA LINPTR /MOVE POINTER BACK ONE
484 JMS TYPE /ECHO RUBBED-OUT CHARACTER
493 JMS TYPE /ENCLOSE RUBBED-OUT CHARS IN \'S
510 ESCAPE, TAD ("$ /ECHO ESCAPE AS DOLLAR SIGN
512 ISZ ESCBIT /NOTE ESCAPE
513 CR, DCA I LINPTR /INSERT 0 AT END
515 JMP I READ /RETURN, WE GOT LINE
521 TAD [200 /FORCE TO 8-BIT
527 DCA .-1 /DELAY FIRST TIME THRU TO LET THINGS QUIET DOWN
530 JMP I TYPE /NO ECHOING
540 LF, DCA I LINPTR /TEMPORARILY INSERT A 0 SENTINEL
548 JMP I [GT /FINHSHED, GET SOME MORE CHARS
549 JMS I [TYPE /ECHO CURRENT CHARS
552 \fEOF, JMS I [SPACE /SPAN OVER SPACES
553 JMS I [GETDEV /GET DEVICE
583 ZBLOCK 4 /PATCH SPACE
587 JMP I [BADEV /NOT FILE STRUCTURED
588 CLA IAC /READ BLOCK 0 TO REWIND
593 \fUNLOAD, JMS I [SPACE
614 JMP I [SYNTAX /CAN'T BACKSPACE TO EOD
621 \fGETNUM, 0 /PARSE OFF :NNNN [F ! R] OR EOD
632 JMS I [SPACE /OPTIONAL SPACES
642 JMS I [SPACE /MORE OPTIONAL SPACES
646 JMP I GETNUM /NO F OR R. F ASSUMED
656 EO, STA /-1 MEANS 'E'
659 \f/GET A DECIMAL NUMBER, RETURN IT IN AC
668 TAD (-"0 /CONVERT TO DIGIT
670 DCA FLG /NOTE PASSAGE OF A DIGIT
689 DCA NUM /IF NO DIGITS, RETURN A 1
694 /PARSES OFF A DEVICE NAME (1-4 CHARS)
695 /DETERMINES IF IT EXISTS
696 /LOADS HANDLER INTO 7200-7577 IF NOT ALREADY IN CORE
697 /SETS ENTRY POINT ADDRESS AT 'ENTRY'
698 /SETS DEVICE NUMBER AT 'DEVNUM'
699 /SETS DEVICE CONTROL WORD AT 'DCW'
709 DCA WD1 /COMBINE TWO WORDS INTO 1 (IN WD1)
713 TAD WD1 /OS/8 KLUDGE FOR UNIQUENESS
715 STL RAR /FORCE BIT 0 ON IF 2ND WORD WAS NON-ZERO
722 WD2, 0 /GETS DEVICE NUMBER
723 WD3, 0 /GETS ENTRY POINT
724 JMP I [NONEX /DEVICE DOESN'T EXIST
726 SZA /IS HANDLER ALREADY IN CORE?
730 TAD (7201 /ALLOW TWO PAGE HANDLER IN 7200
737 DW2, 0 /GETS DEVICE NUMBER
738 DW3, 0 /GETS ENTRY POINT
739 JMP I [NONEX /DOESN'T EXIST
750 DCA DCWPTR /POILT INTO DEVICE CONTROL WGRD TABLE
752 TAD I DCWPTR /GET DCW
760 TAD I (37 /GET ADDRESS OF DHIT
789 \fLOADPT, TAD I (FUNCT
792 JMP I [GOAWAY /LOAD POINT ON A REWIND IS NOT AN ERROR
794 TEXT /? CAN'T - AT BOT OR EOT/
796 \fREADEOF,JMS I [PRINT
797 TEXT /% CAN'T - AT EOF/
801 TEXT /% CAN'T - AT BOF/
821 JMP I (END /SOFT ERROR
823 TEXT \? CAN'T - I/O ERROR\
877 DTLA /SELECT ANOTHER UNIT
883 SZA CLA /SYSTEM TC08 DECTAPE MUST BE UNIT 0
887 AND [7000 /ISOLATE UNIT # IN BITS 0-2
903 TAD [77 /GET DEV CODE
906 TAD (6004 /BUILD 'SDLC'
909 TAD (3000 /GO, REVERSE
945 DCA T2 /T2 CONTAINS NEG OF SMALLER IOT
1010 JMS I (FUDGE /DON'T LET GUY TRICK US INTO GOING PAST EOD
1015 SKPEOD, JMS I (FUDGE /DON'T LET GUY TRICK US INTO GOING PAST EOD
1048 TAD (SKPKOD /SKIP 1 RECORD FORWARD
1057 \fMAGUNL, TAD (UNLKOD
1085 DIR, 0 /0- FORWARD ; 1- BACKWARDS
1089 JMP I (EODERR /V3C NEW HANDLER CALL
1090 TAD DIR /SAW FILE MARK
1092 JMP I [READEOF /AT END OF FILE
1093 JMP I [READBOF /AT BEGIN OF FILE
1100 JMP I [IOERR /HARD ERROR
1106 -1 /BACK OVER FILE MARK
1116 TEXT \? CAN'T - I/O ERROR\
1117 TAD (-13 /11 BITS TO LOOK AT
1144 \fBIT1, JMS I [PRINT
1151 TEXT /(SELECT ERROR)/
1154 TEXT /(PARITY ERROR)/
1159 \fBIT6, JMS I [PRINT
1160 TEXT /(RECORD LENGTH INCORRECT)/
1163 TEXT /(TIMING ERROR)/
1173 AND (6 /ISOLATE UNIT
1174 TAD (2000 /WRITE PROTECT DISK
1175 DLDC /LOAD COMMAND REGISTER
1179 \fBIT9, JMS I [PRINT
1180 TEXT /(WRITE LOCK-OUT)/
1183 TEXT /(READ COMPARE ERROR)/
1186 TEXT /(ILLEGAL FUNCTION)/
1188 \fNOTIMPL,JMS I [PRINT
1189 TEXT /% OPERATION NOT YET IMPLEMENTED/
1191 EODERR, JMS I [PRINT
1192 TEXT /? CAN'T - AT EOD/
1194 \f/THIS ROUTINE PREVENTS US FROM GOING PAST EOD WHEN
1195 /SKIPPING FORWARD FILES.
1196 /IT DOES THIS BY THE FOLLOWING ALGORITHM:
1197 /FIRST WE BACKSPACE A RECORD.
1198 /IF WE SAW DATA, THEN OK, WE RETURN TO THE USER;
1199 /THIS WILL NOT AFFECT HIS SKIP FILE COUNT.
1200 /IF WE SAW A FILE MARK, THEN WE SKIP FORWARD
1201 /BACK OVER THAT FILE, IGNORING THE FILE MARK ERROR.
1202 /IF WE SAW BOT, THEN, OK NO ERROR.
1205 JMS I ENTRY /V3C ALL NEW
1217 /IF ERROR WAS BOT, OK
1224 JMP I BER /BOT OK, NO FRWD
1247 JMP I [SYNTAX /NO : OR BLANK AFTER NAME
1249 JMS I [SPACE /IGNORE OPTIONAL SPACES
1259 TAD (MAIN-1 /LOOK FOR DEVICE TYPE IN MAIN TABLE
1263 JMP NOTYP /NOT FOUND
1268 TAD (3 /POINT TO NEXT ENTRY
1270 FNDTYP, TAD I XR1 /GET GENERIC NAME
1275 TAD I XR1 /GET PTR TO DEVICE TABLE
1279 DCA SAVPTR /SAVE SCAN POINTER
1282 SNA CLA /ARE NEXT TWO CHARS 'NO'?
1285 DCA LINPTR /RESTORE PTR
1287 SNA /GET NEXT KEYWORD POINTER
1289 ISZ PTR /POINT TO PTR TO ROUTINE
1293 DCA PTR /GET PTR TO ROUTINE
1294 JMS I (HREAD /READ HANDLER
1295 JMS I PTR /CALL ROUTINE
1296 JMS I (HWRITE /REWRITE HANDLER
1298 \fHYPH, JMS I [ALPHA
1306 JMS I [SPACE /IGNORE SPACE
1312 TEXT \? UNKNOWN ATTRIBUTE FOR DEVICE \
1329 TAD (AUX /SEARCH AUXILIARY TABLE
1350 L7200, 7200 /INTO 7200-7577
1351 BLOCK, 0 /FROM THIS BLOCK ON SYSTEM DEVICE
1354 AND (177 /GET RELATIVE ENTRY PT
1359 JMP I HREAD /VNO ALREADY SET BY - COMMAND
1376 RESERR, JMS I [PRINT
1377 TEXT /? CAN'T - DEVICE IS RESIDENT/
1381 TEXT /? CAN'T - OBSOLETE HANDLER/
1395 TEXT /? CAN'T - UNKNOWN VERSION OF THIS HANDLER/
1398 \fMAIN, -0; DEVICE TTY; TTYTBL
1399 -1; DEVICE PTR; PTRTBL
1400 -2; DEVICE PTP; PTPTBL
1401 -3; DEVICE CDR; CDRTBL
1402 -4; DEVICE LPT; LPTTBL
1403 -20; DEVICE MTA; MTATBL
1406 /TABLE ENDS WITH A POSITIVE NON-ZERO NUMBER
1407 \fCDRTBL, CODE;CDCODE
1411 LPTTBL, WIDTH;LPWDTH
1417 MTATBL, PARITY;MTAPAR
1422 \fTTYTBL, WIDTH;TTWIDTH
1444 \fWIDTH, "W;"I;"D;"T;"H;0
1446 LV8E, "L;"V;4000+"8;4000+"E;0
1448 ALT, "A;"L;"T;4000+"M;4000+"O;4000+"D;4000+"E;0
1450 PAYGE, "P;"A;"G;"E;0
1452 LOC, "L;"O;"C;4000+"A;4000+"T;4000+"I;4000+"O;4000+"N;0
1453 FILES, "F;"I;"L;"E;4000+"S;0
1454 READO, "R;"E;"A;"D;4000+"O;4000+"N;4000+"L;4000+"Y;0
1455 VERS, "V;"E;"R;4000+"S;4000+"I;4000+"O;4000+"N;0
1456 PARITY, "P;"A;"R;4000+"I;4000+"T;4000+"Y;0
1457 DENSITY,"D;"E;"N;4000+"S;4000+"I;4000+"T;4000+"Y;0
1459 FLAGG, "F;"L;"A;"G;0
1461 EVEN, "E;4000+"V;4000+"E;4000+"N;0
1462 ODD, "O;4000+"D;4000+"D;0
1463 DELAY, "D;"E;"L;"A;"Y;0
1488 TEXT /? CAN'T AFFECT ANNALEX LPT/
1495 TEXT /? CAN'T - NOT KL8E HANDLER/
1539 TEXT /? BAD VERSION LETTER/
1593 \fPAGOK, TAD I (7200+216
1638 TAD (1200 /TAD TTY240
1668 REASEM, JMS I [PRINT
1669 TEXT /? CAN'T - MUST REASSEMBLE KL8E SOURCE/
1676 \f/ENTER WITH PTR TO POSSIBLE KEYWORD IN AC
1686 JMS I [ALPHA /IS IT ALPHANUMERIC?
1689 CLL RAL /LOW ORDER 11 BITS
1691 JMP KL /MATCHED, KEEP LOOKING
1692 JMP I KEYSRCH /DIDN'T MATCH
1695 CIA /INPUT STREAM RAN OUT OR HIT SPACE
1697 JMP GOTKEY /SPACE OR EOL MATCH FLAGGED CHARACTER
1703 STA /SKIP EXTRA STUFF
1705 ISZ KEYSRCH /TAKE GOOD RETURN 2
1796 JMP I [SYNTAX /NO DIGITS
1825 \fBADWID, JMS I [PRINT
1826 TEXT /? ILLEGAL WIDTH/
1904 TAD (7200 /BASE OF HANDLER
1925 DCA GTEM /SAVE CHAIN STATUS
1981 BADCOD, JMS I [PRINT
1982 TEXT /? UNKNOWN CARD CODE/
1985 /SUPPOSED TO WORK ON ALL VERSIONS
2015 TAD (7200 /BASE OF HANDLER
2027 \fLIST1, 304;305;306
2033 LIST2, 3203;4007;3502
2038 LIST3, 7735;4076;0774
2042 \fTECNAM, FILENAME TECO.SV
2048 CLA IAC /LOOKUP ON SYS
2052 ARG1, TECNAM /STARTING BLOCK
2054 JMP I TECO /NOT FOUND
2058 100 /READ 1 PAGE FROM TECO
2065 DCA I (7002 /REL LOC 2 IS S.A.
2076 /7000-7177 BUFFER FOR TECO CCB
2077 /7200-7577 BUFFER FOR HANDLER