File: SET40.MA of Tape: OS8/OS8-Latest/new-9
(Source file text)
/OS/8 SET FOR KBM V40 / / / / / / / / /COPYRIGHT (C) 1978,1979,1980 BY DATAPLAN GMBH, LAUDA, BRD / / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DATAPLAN GMBH. /DATAPLAN GMBH 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 DATAPLAN'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DATAPLAN. / /DATAPLAN GMBH ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY /OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DATAPLAN. / / / / / / / / / / /W.V.D.MARK, DP CONSULTING, ZUERICH, SWITZERLAND /JUL-1978 /JUL-1979 /DEZ-1979 /JAN-1980 / EDIT HISTORY: / 19-MAR-77 S.R. REMOVED FROM CAMP V4 / 19-MAR-77 S.R. FIXED BUG WITH SET MTA FILES / 19-MAR-77 S.R. FIXED BUG WITH SET CDR / 19-MAR-77 S.R. FIXED BUG WITH = OPTION / 19-MAR-77 S.R. CONVERTED TO MACREL CODE / 01-APR-77 S.R. TTY PAUSE / 01-APR-77 S.R. TTY HEIGHT / 01-APR-77 S.R. TTY SCOPE / 17-APR-77 S.R. REWROTE TTY PAGE / 17-APR-77 S.R. DEV: DVCODE / 17-APR-77 S.R. FINISHED TTY SCOPE / 27-APR-77 S.R. TTY COL / 27-APR-77 S.R. SYS OPTIONS (INIT, OS8, OS78) / 03-MAY-77 S.R. LA8A, LA78 / 03-MAY-77 S.R. INIT OS78 FIXES TERMINATE / 03-MAY-77 S.R. BASIC FIXES / 29-JUN-77 S.R. TTY ARROW / 29-JUN-77 S.R. TTY ESC / 29-JUN-77 S.R. DEV BLK LOC / 30-JUL-78 W.M. DATA IN FIELD 1 / OPTIMIZED CODE (6 FREE PAGES) / ENHANCED LPT COMMANDS FOR LPSS HANDLER / PRINTS THRU BATCH / GETS COMMANDS UP TO $ FROM BATCH STREAM / 31-DEC-78 W.M. SUPPORT FOR NEW TTY HANDLER(KL8EG) / LPT SUPPORT FOR EDIT & BATCH / 1-MAR-79 W.M. PRINTRONIX SUPPORT / 1-JUL-79 W.M. MACREL ONLY / SYS ASS,SYS DEA COMMANDS / GERMANIZED / MMISC OPTIONS / 20-JAN-80 W.M. ADAPT TO NEW VERSION NUMBERS 'M' / SET RB01,PDP8 OR VT78 GERMAN=1 / MUST SKIP LOCS 1000-1377 /FIELD 0 /0000-0777 /SET /1000-1377 /OS/8 LINE BUFFER /1400-6577 /SET /6600-7177 /AUXILIARY I/O BUFFER /7000-7177 /I/O BUFFER FOR TECO CCB /7200-7577 /OS/8 HANDLER /7600-7777 /OS/8 /FIELD 1 /2000-.... /ERRORS, MESSAGES, LISTS,... /LOADING INSTRUCTIONS: / .MAC SET40 / .LINK SET40,TTY:<SET40/B /MUST GO THRU .BN / .LO SET40/9/P / .SA SYS SET BATOUT=7400 BATIN=5400 KMNTRY=400 KMINIT=1077 SCPBIT=7726 /BIT 4 UDNAME=7741 DCB=7760 OS78BT=7771 MMISC=7777 LINBUF=1000 AUXBUF=6600 HANBUF=7200 VERSL="0&77 PATCHL="B&77 .START 200,0 .JSW 2401 /AC NUMERICAL LOADS FILE ACM3= CLL STA RTL ACM2= CLL STA RAL ACM1= CLL STA AC0= CLA CLL AC1= CLA CLL IAC AC2= CLA STL RTL AC3= CLA STL IAC RAL AC4= CLA CLL IAC RTL AC6= CLA STL IAC RTL AC100= CLA CLL IAC BSW AC2K= CLA STL RTR AC3777= CLL STA RAR AC4K= CLA STL RAR AC5777= CLL STA RTR AC6K= CLA STL IAC RTR AC7775= ACM3 AC7776= ACM2 AC7777= ACM1 .XSECT XSET XR1, 0 XR2, 0 XR3, 0 XR4, 0 .ZSECT ZSET 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 ESCAPE CNT, 0 CTOFLG, 0 /-1 MEANS SAW ^O PTR, 0 DHIT, 0 /DEVICE HANDLER INFO TABLE - 1 DHI, 0 /DEVICE HANDLER INFO DBLK, 0 /DEVICE HANDLER BLOCK VNOPTR, 0 /PTS TO VERSION # IN HANDLER VNO, 0 /CURRENT HANDLER VERSION NUMBER SAVPTR, 0 NO, 0 /1 MEANS 'NO' FLG, 1 /1 MEANS SAW NO DIGITS RR, 0 NUCODE, 0 SCOP, 0 /NON-0 IF TTY IS SCOPE NUM2, 0 BTSTRP, 0 /USED BY RDAUX,WRAUX; THEN POINTER TO LOC .ASECT SETSTA FIELD 0 *200 START, SKP JMP CHN JMS BIT JMS I [READ /READ A LINE INTO OS/8 LINE BUFFER CHN, TAD [LINBUF /CHAIN ENTRY ADDRESS DCA LINPTR /INITIALIZE POINTER TO LINE BUFFER JMS BIT 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 BRSET SNA CLA JMP I [GOAWAY SYNTAX, JMS I [ERROR /NONE OF THESE ESYN BIT, 0 CDF 10 TAD I (SCPBIT CDF 0 AND [200 DCA SCOP /NOTE WHETHER TTY IS SCOPE V3D AC2K AND I (7777 /TEST IF UNDER BATCH SNA CLA JMP I BIT TAD I (7777 /YES; GET FIELD AND [70 TAD (6202 DCA I (TYPEB /SET BATCH PRINT TAD I (TYPEB DCA I (GETB /SET BATCH INPUT JMP I BIT / 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 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 /SCAN PAST EXTRA LETTERS OR DIGITS SCAN, 0 JMS ALPHA JMP NOPE CLA JMP SCAN+1 NOPE, CLA JMS 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 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 SYNTAX /NONE. TSK. TSK. PAGE ERROR, 0 CDF 0 AC2K /RELOC! TAD I ERROR DCA .+2 JMS PRINT 0 GOAWAY, TAD ESCBIT SZA CLA JMP GOEXIT /LINE ENDED WITH ESCAPE TAD I [READ /WAS 'READ' EVER CALLED? SZA CLA JMP I [START /YES, GET A NEW LINE GOEXIT, JMS I [TYPE JMP I [7605 /NO, WE MUST'VE BEEN CHAINED TO, RECALL KBM PRINT, 0 TAD I PRINT DCA DPRINT PRINTL, CDF 10 TAD I DPRINT BSW JMS PRIN CDF 10 TAD I DPRINT JMS PRIN ISZ DPRINT JMP PRINTL LV, JMS I [CRLF ISZ PRINT JMP I PRINT DPRINT, 0 PRIN, 0 CDF 0 AND [77 SNA JMP LV TAD [240 AND [77 TAD [240 JMS TYPIT JMP I PRIN TYPIT, 0 DCA T3 KSF JMP NOKBD GEGEKB, KRB AND [177 TAD (-3 SNA JMP CTRLC TAD (203-217 /^O SNA JMP CTRLO TAD (217-223 /^S? SNA CLA JMP CTRLS NOKBD, TAD T3 JMS I [TYPE JMP I TYPIT CTRLC, TAD ["^ JMS I [TYPE TAD ("C JMS I [TYPE /ECHO "^C" JMP I [7600 /THEN GO AWAY CTRLO, TAD ["^ JMS I [TYPE TAD ("O JMS I [TYPE JMS I [CRLF STA DCA CTOFLG /STOP ECHOING JMP NOKBD CTRLS, KSF /WAIT FOR NEXT JMP CTRLS JMP GEGEKB BATERR, ISZ ESCBIT /SIGNAL END JMS ERROR EBERR NONEX, JMS ERROR EDVNEX SYSERR, JMS ERROR EIOSYS BADKBM, JMS ERROR EOLDVE REASEM, JMS ERROR ERKL8E ZERERR, JMS ERROR EZERO HELP, JMS PRINT MHELP1 JMS PRINT MHELP2 JMS PRINT MHELP3 JMP I [START VERSION,JMS PRINT MVER JMP I [START VERTST, 0 /TEST FOR OLD VERSION NUMBER TAD I VERTST /"X IS ARG TO VERTST AND [77 /ONLY 6 BIT CIA TAD VNO /THIS HANDLERS VESION NUMBER SPA CLA /THIS AND NEWER HANDLERS ALLOWED OLDERR, JMS ERROR EOBSHD JMP I VERTST /FALL THRU ARG PAGE SYSOS8, 0 TAD NO /REVERSE MEANING OF 'NO' SNA CLA IAC DCA NO JMS SYS78 JMP I SYSOS8 SYS78, 0 TAD (OS78BT JMS I [SET200 TAD (OS78BT&177+200 JMS I [RDAUX 0 JMS I [SET200 JMS I [WRAUX TAD (56 JMS I [RDAUX /THERE'S A 2ND COPY 11 /IN BLOCK 11 LOCATION 56 JMS I [SET200 JMS I [WRAUX JMP I SYS78 INIMSG, "@;"I;"N;"I;"T;0 SYSINI, 0 JMS I [GETC SNA CLA JMP DEFINI /ASSUME @INIT TAD NO SZA CLA JMP I [SYNTAX /SET SYS NO INIT CMD JMS I [BACKC TAD LINPTR DCA SAVLP TAD (-6 /ALLOW A MAXIMUM OF 5 CHARS DCA SAVKN SAVLUP, JMS I [GETC SNA CLA JMP DEFDO ISZ SAVKN JMP SAVLUP JMS I [ERROR EICOBG SAVKN, 0 SAVLP, 0 DEFINI, TAD (INIMSG DCA SAVLP DEFDO, TAD [77 JMS I [RDAUX 0 TAD NO SZA CLA TAD (KMNTRY-KMINIT TAD (KMINIT DCA I BTSTRP JMS I [WRAUX TAD NO SZA CLA JMP I SYSINI ACM1 JMS I [RDAUX 11 STA TAD SAVLP DCA XR2 TAD BTSTRP DCA XR3 TAD (-5 DCA SAVKN MOVL, TAD I XR2 DCA I XR3 ISZ SAVKN JMP MOVL JMS I [WRAUX JMP I SYSINI RDAUX, 0 /READ 2 PAGES INTO AUXBUF DCA BTSTRP /ADRESS TO BE MODIFIED TAD BTSTRP AND [7600 SNA CLA TAD I (7612 /CHECK FOR 2-PAGE SYS TAD (-3 SNA CLA TAD (66 /YES; MAYBE WE WANT BLK 66 DCA AUXBLK TAD I RDAUX /NOW GET WANTED BLK ISZ RDAUX SNA TAD AUXBLK /WANTED BLK 0, MAYBE GETS 66 DCA AUXBLK JMS I [7607 200 AUXBUF AUXBLK, 0 JMP I [SYSERR TAD AUXBLK-1 TAD BTSTRP DCA BTSTRP /POINTS TO DESIRED LOC JMP I RDAUX WRAUX, 0 TAD BTSTRP SNA CLA JMP I WRAUX /ONLY WRITE ONCE TAD AUXBLK DCA .+4 JMS I [7607 4200 AUXBUF 0 JMP I [SYSERR DCA BTSTRP /SET WRITTEN FLAG JMP I WRAUX PAGE FIELD 0 *1400 TTAROW, 0 /V3D JMS I (TTYTST AC2 JMS I [SRCH 300;30;6203 JMP I [REASEM TAD TEMP AND [177 TAD (5200 DCA T AC1 JMS I [SRCH 340;20;32 JMP I [REASEM TAD TEMP AND [177 TAD (5200 DCA T3 TAD (13 TAD TEMP DCA TEMP TAD NO SNA CLA JMP YESARO /YES TAD T3 NOAROW, DCA I TEMP JMP I TTAROW YESARO, TAD T JMP NOAROW GENBLK, 0 /V3D JMS I (GENCMN TAD NUM2 DCA BLOK /GET BLOCK NUMBER TAD (LOC JMS I [KEYSRCH JMP I [SYNTAX JMS I (GENCMN /GET LOCATION TAD [-400 CLL TAD NUM2 SZL CLA JMP I [NUMBIG TAD NUM2 TAD PAUXBUF DCA NUM2 JMS I ENTRY /READ BLOCK 200 PAUXBUF,AUXBUF BLOK, 0 JMP I [SYSERR TAD TEMP SNA CLA JMS I (ODT JMS I [ONUM DCA NUM CLA IAC DCA DEVNUM /FAKE OUT - PREVENTS RE-WRITING USED HANDLER TAD FLG SZA CLA JMP I GENBLK JMS I [GETC SZA CLA JMP I [SYNTAX TAD NUM DCA I NUM2 /SET NEW VALUE TAD BLOK DCA BLOK2 JMS I ENTRY 4200 AUXBUF BLOK2, 0 JMP I [SYSERR JMP I GENBLK TTGAG, 0 TAD (33 JMS I (TYPIT TAD (110 JMS I (TYPIT TAD (33 JMS I (TYPIT TAD (112 JMS I (TYPIT TAD [-10 DCA TEMP TAD (12 JMS I (TYPIT ISZ TEMP JMP .-3 JMS I [PRINT MGAG1 JMS I [PRINT MGAG2 JMS I [PRINT MGAG3 JMS I [PRINT MGAG4 JMS I [PRINT MGAG5 JMS I [PRINT MGAG6 JMS I [PRINT MGAG7 JMP I TTGAG PAGE BRANCH, 0 DCA T ACM1 TAD I BRANCH DCA DBRANC ISZ BRANCH CDF 10 BR2, ISZ DBRANC TAD I DBRANC ISZ DBRANC SNA JMP NOTFND TAD T SZA CLA JMP BR2 TAD I DBRANC DCA T CDF 0 JMP I T /FOUND ITEM IN COLUMN 1, JUMP TO ADDRESS IN COL 2 NOTFND, TAD T CDF 0 JMP I BRANCH /IF NOT FOUND IN COL 1, RETURN WITH AC INTACT DBRANC, 0 LP78, 0 /ALL DO THE SAME , BUT USE OTHER LISTS AC0 /THE AC TELLS WHICH LIST, EACH LIST 8 LONG JMS LPCHNG JMP I LP78 LP8A, 0 AC1 JMS LPCHNG JMP I LP8A LPLX, 0 AC2 JMS LPCHNG JMP I LPLX LPSLU2, 0 AC3 JMS LPCHNG JMP I LPSLU2 LPSLU3, 0 AC4 JMS LPCHNG JMP I LPSLU3 LPCHNG, 0 /FOR LPSS LINE-PRINTER HANDLER CLL RTL RAL TAD (LPIOTL-1 DCA XR3 /POINT TO START OF CORRECT LIST JMS I (LPTTST AC2 JMS I [SRCH 7;100;7640 JMP I (OLDERR JMS LPGET DCA I TEMP AC3 JMS I [SRCH 100;100;7700 JMP I (OLDERR TAD I TEMP AND [7000 TAD [-7000 SZA CLA /NOP OR CMA JMP I (OLDERR JMS LPGET DCA I TEMP ISZ TEMP TAD I TEMP AND [7000 TAD (-6000 SZA CLA JMP I (OLDERR JMS LPGET DCA I TEMP ISZ TEMP JMS LPGET DCA I TEMP AC2 JMS I [SRCH 100;100;6203 JMP I (OLDERR JMS LPGET DCA I TEMP AC1 JMS I [SRCH 100;100;6201 JMP I (OLDERR JMS LPGET DCA I TEMP JMS I (EDIBAT /CHANGE EDIT FOR VIEW AND BATCH JMP I LPCHNG LPGET, 0 /GET ITEM FROM LIST IN FIELD 1 CDF 10 TAD I XR3 CDF 0 JMP I LPGET PAGE /READ A LINE INTO OS/8 LINE BUFFER READ, 0 SNA CLA RD1, TAD ("# JMS TYPE DCA CTOFLG /ALLOW ECHOING TAD [LINBUF DCA LINPTR GT, DCA ESCBIT JMS I (GET LOOK, JMS I [BRANCH BRIN DCA TEMP /NONE OF THESE TAD LINPTR TAD (-LINBUF-377 SNA CLA /AT END OF LINE BUFFER? JMP GT /YES, DON'T ACCEPT CHAR JMS PRNT /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> BOL, JMS CRLF JMP RD1 PRNT, 0 ISZ RBFLAG JMP .+3 TAD ["\ JMS TYPE DCA RBFLAG TAD TEMP JMS TYPE JMP I PRNT BS=210 RUBOUT, TAD LINPTR TAD [-LINBUF SNA JMP BOL /AT BEGIN OF LINE TAD (LINBUF-1 DCA LINPTR /MOVE POINTER BACK ONE TAD SCOP SZA CLA JMP RUBBS TAD ["\ ISZ RBFLAG JMS TYPE ACM1 DCA RBFLAG TAD I LINPTR JMS TYPE JMP GT RUBBS, TAD (BS JMS TYPE TAD [240 JMS TYPE TAD (BS JMS TYPE JMP GT RBFLAG, 0 ESCAPE, TAD ("$ /ECHO ESCAPE AS DOLLAR SIGN DCA TEMP JMS PRNT ISZ ESCBIT /NOTE ESCAPE CR, DCA I LINPTR /INSERT 0 AT END JMS CRLF JMP I READ /RETURN, WE GOT LINE LF, DCA I LINPTR /TEMPORARILY INSERT A 0 SENTINEL TAD (LINBUF-1 DCA XR1 JMS CRLF TAD ("# JMS TYPE LFLP, TAD I XR1 SNA JMP GT /FINISHED, GET SOME MORE CHARS JMS TYPE /ECHO CURRENT CHARS JMP LFLP TYPE, 0 DCA TYPEM TLS JMS I (DELAYY DCA .-2 DCA .-2 TAD TYPEB /UNDER BATCH? SZA CLA JMP TYPEB /YES PRINT INDIRECT TAD CTOFLG SZA CLA JMP I TYPE /NO ECHOING TAD TYPEM SNA JMP I TYPE TSF JMP .-1 TLS CLA JMP I TYPE TYPEM, 0 TYPEB, 0 /OR CIF BATCH FIELD TAD TYPEM JMS I (BATOUT JMP I TYPE CRLF, 0 TAD [215 DCA TEMP JMS PRNT TAD [212 JMS TYPE JMP I CRLF 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 STA JMS I [SPACE TAD FLG SZA DCA NUM /IF NO DIGITS, RETURN A 1 TAD NUM JMP I NUMBER / 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 COMBIN 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 (HANBUF+1 /ALLOW TWO PAGE HANDLER 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 /POINT INTO DEVICE CONTROL WGRD TABLE CDF 10 TAD I DCWPTR /GET DCW DCA DCW TAD DCW RTR RAR AND [77 DCA DEVTYP STA TAD I (37 /GET ADDRESS OF DHIT DCA DHIT TAD DHIT TAD DEVNUM DCA DHI TAD I DHI CDF 0 DCA DHI TAD DHI RTL RTL RTL AND [17 SZA TAD (15 DCA DBLK JMP I GETDEV COMBIN, 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 COMONE TAD WD1 /OS/8 KLUDGE FOR UNIQUENESS CLL RAL STL RAR /FORCE BIT 0 ON IF 2ND WORD WAS NON-ZERO DCA WD1 COMONE, TAD WD1 JMP I COMBIN DELAYY, 0 TAD [-10 DCA OUTER ISZ ZER JMP .-1 ISZ OUTER JMP .-3 JMP I DELAYY ZER, 0 OUTER, -10 PAGE TTPAUS, 0 JMS TTYTST TAD (11 JMS I [SRCH 216;1;2200 /CHECK 'ISZ TTYPCH' JMP I [REASEM TAD I TEMP AND (7007 TAD (-6001 /CHECK 'PAUSL,KSF' SZA CLA JMP I [REASEM JMS I [SRCH 326;1;5600 /CHECK 'JMP I TTYPCH' JMP I [REASEM TAD (PSTBL JMS I (FIXUP DCA NUM JMS I [GETC SNA CLA JMP NOPA /NO PAUSE VALUE TAD NO SZA CLA JMP NOPA /SET TTY NO PAUSE XX? JMS I [BACKC AC6K JMS I [NUMCHK EPAUSE TAD NUM /SCALE CORRECTLY CLL RAL TAD NUM CLL RTL DCA NUM AC4 JMS I [SRCH 330;20;11 JMP I [REASEM TAD NUM CIA DCA I TEMP NOPA, JMS I (BASLUK JMP I TTPAUS TAD NUM CIA DCA I (AUXBUF+1 JMS I [WRAUX JMP I TTPAUS ONUM, 0 DCA NUM CLA IAC DCA FLG ONM1, JMS I [GETC TAD (-"0-10 /CONVERT TO DIGIT CLL TAD [10 SNL JMP OEON DCA T4 DCA FLG TAD NUM AND [7000 SZA CLA JMP I [NUMBIG TAD NUM CLL RTL RAL TAD T4 DCA NUM JMP ONM1 OEON, CLA JMS I [BACKC STA JMS I [SPACE TAD NUM JMP I ONUM GET, 0 TAD GETB /UNDER BATCH? SZA CLA JMP GETB /YES GET MORE FROM BATCH STREAM KSF JMP .-1 KRB AND [177 TAD [200 /FORCE TO 8-BIT JMP I GET GETB, 0 JMS I (BATIN JMP I (BATERR TAD (-212 /IGNORE LFDS SNA JMP GETB TAD (212 JMP I GET TTYTST, 0 JMS I (DBLTST JMS I [VERTST "M JMP I TTYTST PAGE TTHGHT, 0 TAD [7600 JMS NUMCHK EBADHT JMS I (TTYTST TAD (12 JMS I [SRCH 250;40;7600 JMP I [REASEM TAD NUM CIA DCA I TEMP TAD I TEMP ISZ TEMP DCA I TEMP JMS I (BASLUK JMP I TTHGHT TAD NUM CIA DCA I (AUXBUF JMS I [WRAUX JMP I TTHGHT LPHGHT, 0 TAD [7600 JMS NUMCHK EBADHT JMS I (LPTTST TAD NUM CIA DCA I (HANBUF+202 JMP I LPHGHT TTCODE, 0 TAD NO SZA CLA JMP I [SYNTAX JMS I [ONUM SNA JMP I [SYNTAX DCA NUCODE TAD NUCODE AND [7700 SZA CLA JMP I [NUMBIG JMS I [TTYTST TAD [HANBUF DCA RR JMS I (GETIOT JMP I [OLDERR CIA DCA T2 TTLP, JMS I (GETIOT JMP I [OLDERR CIA DCA T3 TAD T3 CIA TAD T2 SNA JMP TTLP SMA CLA JMP .+3 TAD T3 DCA T2 /T2 CONTAINS NEG OF SMALLER IOT TAD [HANBUF DCA RR TTLP2, JMS I (GETIOT JMP I TTCODE TAD T2 SZA CLA CLA IAC TAD NUCODE CLL RTL RAL DCA T3 TAD I RR AND (7007 TAD T3 DCA I RR JMP TTLP2 LPTAB, 0 TAD [7700 JMS NUMCHK EBADTB JMS I (LPTTST TAD NUM DCA I (HANBUF+203 JMP I LPTAB NUMCHK, 0 /CHECK FOR NUMERICAL ARG DCA NUMMSK TAD I NUMCHK ISZ NUMCHK DCA BADHIT+1 /ERROR MESSAGE TAD NO SZA CLA JMP I [SYNTAX /SET DEV NO NUMBER JMS I (OPTEQ /CHECK = JMS I [NUMBER SNA JMP I [ZERERR DCA NUM TAD FLG SZA CLA NUMBIG, JMS I [ERROR /NO NUMBER ENUBIG TAD NUM AND NUMMSK SZA CLA BADHIT, JMS I [ERROR EBADHT /WILL BE REPLACED JMP I NUMCHK NUMMSK, 0 PAGE SET200, 0 /DF IS SPECIALLY SET SZA DCA BTSTRP /IF AC=0 USE ADRESS FROM RDAUX TAD I BTSTRP AND (7577 DCA TEMP TAD TEMP TAD (-HLT SZA CLA JMP I (BADKBM TAD NO SNA CLA TAD [200 TAD TEMP DCA I BTSTRP JMP I SET200 FIXUP, 0 DCA FIXPTR FIXLUP, CDF 10 TAD I FIXPTR CDF 0 SNA JMP I FIXUP DCA FIXLOC ISZ FIXPTR TAD NO SZA CLA ISZ FIXPTR CDF 10 TAD I FIXPTR CDF 0 DCA I FIXLOC TAD NO SNA CLA ISZ FIXPTR ISZ FIXPTR JMP FIXLUP FIXPTR, 0 FIXLOC, 0 / SCOPE BIT ON DISK: / BLOCK 0 REL 126 BIT 4 / SCOPE BIT IN MEMORY: / LOC 17726 BIT 4 TTSCOP, 0 JMS I (TTYTST JMS I [RDAUX 11 TAD (KBMTBL JMS FIXUP JMS I [WRAUX JMS I [RDAUX 53 TAD (CDTBL JMS FIXUP JMS I [WRAUX TAD NO /SET SCOPE BIT SNA CLA IAC DCA SCOP CDF 10 TAD (SCPBIT JMS SET200 CDF 0 TAD (SCPBIT&177 JMS I [RDAUX 0 JMS SET200 JMS I [WRAUX TAD (14 JMS I [SRCH 150;20;-232 JMP I [OLDERR TAD NO SNA CLA TAD (1261-1230 /TAD TTY240 TAD (1230 /TAD TTY212 DCA I TEMP ISZ TEMP ISZ TEMP TAD NO SNA CLA TAD (1335-SKP /TAD TTY10 TAD (SKP DCA I TEMP JMP I TTSCOP BASLUK, 0 TAD (BASNAM JMS I [LOOKUP JMP I BASLUK ISZ BASLUK TAD [7 DCA BASBLK AC2 JMS I [RDAUX BASBLK, 0 TAD I BTSTRP SNA CLA JMP I BASLUK OLDBAS, JMS I [PRINT EOLBAS+2000 JMP I BASLUK BASNAM, FILENAME BASIC.SV PAGE SET, JMS I [SPACE DCA VNO /V3C JMS I [GETDEV JMS I [GETC JMS I [BRANCH BRCOHY JMP I [SYNTAX /NO : OR BLANK AFTER NAME COLN, STA JMS I [SPACE /IGNORE OPTIONAL SPACES JMS I [GETC SNA JMP I [SYNTAX TAD [-"- SNA CLA JMP HYPH JMS I [BACKC COLN2, CDF 10 TAD (2331 DCA I (NAM1+2000 /NAMS ARE RELOCATED TAD (2300 /SET TO SYS DCA I (NAM2+2000 STA TAD DEVNUM SNA CLA JMP SYSDV TAD (MAIN-1 /LOOK FOR DEVICE TYPE IN MAIN TABLE MNLUP, DCA XR1 TAD I XR1 SMA SZA JMP NOTYP /NOT FOUND TAD DEVTYP SNA CLA JMP FNDTYP AC3 /POINT TO NEXT ENTRY TAD XR1 JMP MNLUP FNDTYP, TAD I XR1 /GET GENERIC NAME DCA I (NAM1+2000 TAD I XR1 DCA I (NAM2+2000 DCA AUXFLG TAD I XR1 /GET PTR TO DEVICE TABLE INTO, CDF 0 DCA PTR DCA NO TAD LINPTR DCA SAVPTR /SAVE SCAN POINTER JMS I [GETTWO TAD (-'NO SNA /ARE NEXT TWO CHARS 'NO'? JMP SAWNO /YES TAD (<'NO>-<'KE> /OR KE IN? SZA CLA JMP SAWNBK SAWNO, CLA IAC DCA NO JMS I [SCAN STA JMS I [SPACE TAD LINPTR DCA SAVPTR JMP SAWNBK NOF, ISZ PTR SAWNBK, TAD SAVPTR /NO DCA LINPTR /RESTORE PTR SCNLUP, CDF 10 TAD I PTR SNA /GET NEXT KEYWORD POINTER JMP NOKEY ISZ PTR /POINT TO PTR TO ROUTINE JMS I [KEYSRCH JMP NOF /NOT FOUND CDF 10 TAD I PTR /FOUND CDF 0 DCA PTR /GET PTR TO ROUTINE STA TAD DEVNUM SZA CLA JMS I (HREAD /READ HANDLER JMS I PTR /CALL ROUTINE STA TAD DEVNUM SZA CLA JMS I (HWRITE /REWRITE HANDLER JMP I [GOAWAY HYPH, JMS I [ALPHA JMP I [BADV DCA VNO TAD VNO SNA JMP I [BADV AND [37 DCA VNO JMS I [SPACE /IGNORE SPACE JMP COLN2 NOKEY, TAD AUXFLG SZA CLA JMS I [ERROR EUNKAT NOO, ISZ AUXFLG TAD (AUX DCA PTR JMP SCNLUP NOTYP, CLA DCA I (NAM1+2000 DCA I (NAM2+2000 TAD (AUX /SEARCH AUXILIARY TABLE SKP SYSDV, TAD (SYSAUX ISZ AUXFLG JMP INTO /V3D ALLOW SET SYS: AUXFLG, 0 PAGE HREAD, 0 TAD DBLK DCA BLOCK JMS I [7607 200 /READ 2 PAGES HANBUF /INTO 7200-7577 BLOCK, 0 /FROM THIS BLOCK ON SYSTEM DEVICE JMP I [SYSERR TAD VNO SZA CLA /V3C JMP I HREAD /VNO ALREADY SET BY - COMMAND TAD BLOCK /IS IT IN BOOT? SNA CLA JMP HRBOOT /YES TAD DHI AND [177 JMP VLOOP-1 /OK HRBOOT, TAD ENTRY /IF BLOCK 0: BOOTSTRAP AND [177 TAD [200 /ENTRY IN SECOND HALF TAD [HANBUF VLOOP, DCA VNOPTR TAD I VNOPTR CLL TAD (-33 SZL CLA JMP BACKV TAD I VNOPTR SNA JMP I [OLDERR DCA VNO JMP I HREAD BACKV, STA TAD VNOPTR JMP VLOOP RESERR, JMS I [ERROR EDVRES HWRITE, 0 TAD BLOCK SNA JMP RESERR DCA BLKTWO JMS I [7607 4200 HANBUF BLKTWO, 0 JMP I [SYSERR JMP I HWRITE LPWDTH, 0 TAD [7400 JMS I [NUMCHK EWIDTH JMS LPTTST TAD NUM CMA DCA I [HANBUF JMP I LPWDTH LPTTST, 0 TAD I (HANBUF+1 SPA CLA JMS I [ERROR EOBSHD JMS I [VERTST "M LPTOK, JMS DBLTST TAD I [HANBUF+200 SZA CLA JMP I [OLDERR TAD I (HANBUF+201 AND [7700 TAD (-5200 /JUMP OVER ARGS SZA CLA JMP I [OLDERR JMP I LPTTST GENVER, 0 TAD NO SZA CLA JMP I [SYNTAX JMS I [ALPHA JMP BADV DCA NUM TAD NUM AND [40 SZA CLA JMP BADV TAD NUM AND (37 DCA I VNOPTR JMP I GENVER BADV, JMS I [ERROR EBVELT GENREA, 0 CDF 10 TAD I DCWPTR CLL RTL CLL RAL TAD NO RAR CML RAR RAR DCA I DCWPTR CDF 0 CLA IAC DCA DEVNUM JMP I GENREA GENFIL, 0 CDF 10 TAD I DCWPTR CLL RAL CLL RAL /ZERO LINK TAD NO RAR CML RAR DCA I DCWPTR CDF 0 CLA IAC DCA DEVNUM JMP I GENFIL PAGE LPPAGE, 0 TAD LPPAGE DCA LPLV TAD (20 SKP LPLV, 0 TAD (10 DCA TEMP JMS I (LPTTST TAD TEMP TAD NO CLL RAR SZL CLA DCA I (HANBUF+1 JMP I LPLV LPLC, 0 JMS I (LPTTST TAD NO CLL RTL RTL RAL CIA DCA I (HANBUF+2 JMP I LPLC TTECHO, 0 JMS I (TTYTST TAD NO SZA CLA TAD (SKP CLA-1613 /SKP TAD (1613 /TAD I TTYCA DCA I (HANBUF+115 JMP I TTECHO TTPAGE, 0 JMS I (TTYTST AC3 JMS I [SRCH /V3D NEW ROUTINE 240;4;7640 JMP I [REASEM TAD NO SNA CLA TAD (5243-NOP /YES TAD (NOP /NO DCA I TEMP JMP I TTPAGE TTTAB, 0 JMS I (TTYTST JMS I [GETC SNA JMP TTEO TAD (-"/ SNA CLA JMS I [GETC TAD (-"N SZA CLA JMP I [SYNTAX JMP NOTEC TTEO, TAD NO SNA CLA TAD (5000 TAD [200 JMS I (TECO NOTEC, JMS I [SRCH 375;1;5600 JMP I [REASEM TAD (TABTBL JMS I (FIXUP JMP I TTTAB GETC, 0 /GET A CHARACTER, ADVANCE POINTER TAD I LINPTR AND [177 /ALWAYS RETURN 8-BIT SZA TAD [200 /WITH HIGH ORDER BIT ON TAD (-340 /LOWER CASE? SMA TAD (-40 /YES CONVERT TAD (340 ISZ LINPTR /ADVANCE SCAN JMP I GETC /RETURN DBLTST, 0 TAD DHI SPA CLA JMP I DBLTST JMS I [ERROR E2PGHN RBX7, 0 /FOR SETTING BYTE MODE FLOPPY HANDLER TAD RBX7 /TO EITHER VT78 OR PDP8 FORMAT DCA RBX8 /THIS IS FOR YES OR NO VT78 STA SKP RBX8, 0 TAD NO /EITHER YES OR NO PDP8 SPA CLA IAC DCA NO JMS I [VERTST "M TAD NO DCA I (HANBUF+200 /SWITCH IN HANDLER AC=0:PDP8 JMP I RBX8 / PAGE /ENTER WITH PTR TO POSSIBLE KEYWORD IN AC KEYSRCH,0 DCA KPTR KL, CDF 10 TAD I KPTR CDF 0 ISZ KPTR SNA JMP GOTKEY CIA DCA TEMP JMS I [ALPHA /IS IT ALPHANUMERIC? JMP EOK /NO TAD TEMP /COMPARE CLL RAL /LOW ORDER 11 BITS SNA CLA JMP KL /MATCHED, KEEP LOOKING JMP I KEYSRCH /DIDN'T MATCH EOK, JMS I [BACKC TAD TEMP CIA /INPUT STREAM RAN OUT OR HIT SPACE SPA CLA JMP GOTKEY /SPACE OR EOL MATCH FLAGGED CHARACTER JMP I KEYSRCH KPTR, 0 GOTKEY, JMS I [SCAN STA /SKIP EXTRA STUFF JMS I [SPACE ISZ KEYSRCH /TAKE GOOD RETURN 2 JMP I KEYSRCH TTESC, 0 /V3D JMS I (TTYTST AC3 JMS I [SRCH 200;5;336 JMP I [REASEM TAD NO SZA CLA TAD (1337-NOP /YES TAD (NOP /NO DCA I TEMP JMP I TTESC TTLC, 0 JMS I (TTYTST TAD (12 JMS I [SRCH 340;20;-4 JMP I [REASEM TAD I TEMP CLL TAD [200 SNL CLA JMP I [REASEM TAD NO SNA CLA TAD (7600-7640 /7600 CLA TAD (7640 /SZA CLA DCA I TEMP JMP I TTLC LPCODE, 0 JMS I [LPTTST JMS I [OPTEQ JMS I [GENCMN TAD NUM2 AND [7700 SZA CLA DVCERR, JMS I [ERROR EDEVC TAD NUM2 TAD (-30 SPA SNA CLA JMP DVCERR TAD NUM2 CLL RTL RAL DCA NUM2 CDF 10 TAD (6005-10 TAD NUM2 DCA I (SLUX TAD (6006 TAD NUM2 DCA I (SLUX+2 TAD (6001 TAD NUM2 DCA I (SLUX+4 CDF 0 TAD (5 JMS I (LPCHNG JMP I LPCODE PAGE GETIOT, 0 ISZ RR TAD RR TAD [-HANBUF-400 SNA CLA JMP I GETIOT TAD I RR AND [7000 TAD [-6000 SZA CLA JMP GETIOT+1 TAD I RR RTR RAR AND [77 TAD (-20 CLL RAR SNA JMP GETIOT+1 RAL TAD (20 ISZ GETIOT JMP I GETIOT TTWIDTH,0 TAD [7400 JMS I [NUMCHK EWIDTH JMS I (TTYTST TAD NUM AND [7 SZA CLA BADWID, JMS I [ERROR EWIDTH TAD NUM TAD [-200 SNA CLA JMP BADWID TAD (10 JMS I [SRCH 260;20;7600 JMP I [REASEM TAD NUM CMA DCA I TEMP ISZ TEMP TAD NUM CIA DCA I TEMP JMP I TTWIDTH OPTEQ, 0 JMS I [GETC SNA JMP I [SYNTAX TAD (-"= SNA CLA JMP OPTEQ+1 JMS I [BACKC STA /V3D JMS I [SPACE JMP I OPTEQ LPFILL, 0 /FOR LPSS HANDLER TAD LPFILL DCA LPPAUS TAD (12 JMP .+3 LPPAUS, 0 TAD (4001 DCA TEMP JMS I (LPTTST TAD NO SZA CLA JMP .+2 TAD TEMP DCA I (HANBUF+204 JMP I LPPAUS LPAROW, 0 JMS I (LPTTST TAD NO CIA SNA TAD (136 DCA I (HANBUF+205 JMP I LPAROW LPESC, 0 JMS I (LPTTST TAD NO SZA CLA TAD (11 DCA I (HANBUF+206 JMP I LPESC PAGE SRCH, 0 /SEARCH HANBUF, ARGS:START,CNT,WORD DCA TEMP /AC= OFFSET FROM FOUND LOC TAD I SRCH ISZ SRCH TAD (HANBUF-1 DCA XR1 TAD I SRCH ISZ SRCH CIA DCA CNT TAD I SRCH CIA DCA T2 ISZ SRCH SRLUP, TAD I XR1 TAD T2 SNA CLA JMP SRFND ISZ CNT JMP SRLUP JMP I SRCH SRFND, ISZ SRCH TAD XR1 TAD TEMP DCA TEMP JMP I SRCH GENCMN, 0 TAD NO SZA CLA JMP I [SYNTAX JMS I [ONUM DCA NUM2 TAD FLG SZA CLA JMP I [SYNTAX JMS I [GETC DCA TEMP TAD TEMP SNA JMP I GENCMN TAD (-"= SZA TAD ("=-", SZA CLA JMP I [SYNTAX STA JMS I [SPACE JMP I GENCMN GENLOC, 0 JMS GENCMN TAD DHI SPA SNA CLA /ALLOW PEEK INTO BOOTSTRAP TAD [-200 TAD [-200 CLL TAD NUM2 SZL CLA JMP I [NUMBIG TAD NUM2 TAD [HANBUF /BASE OF HANDLER DCA NUM2 TAD TEMP SNA CLA JMS ODT GETNEW, JMS I [ONUM DCA NUM TAD FLG SZA CLA JMP I GENLOC JMS I [GETC SZA CLA JMP I [SYNTAX TAD NUM DCA I NUM2 JMP I GENLOC ODT, 0 TAD I NUM2 JMS OPRIN TAD ("/ JMS I [TYPE TAD I [READ DCA GTEM /SAVE CHAIN STATUS AC1 /PREVENT # JMS I [READ TAD [LINBUF DCA LINPTR TAD GTEM DCA I [READ JMP I ODT OPRIN, 0 DCA N3 TAD (-4 DCA OKNT OPLP, TAD N3 JMS DGP TAD N3 RTL RAL DCA N3 ISZ OKNT JMP OPLP JMP I OPRIN DGP, 0 RTL RTL AND [7 TAD [60 JMS I [TYPE JMP I DGP OKNT, 0 N3, 0 GTEM, 0 PAGE MTAPAR, 0 TAD NO SZA CLA JMP I [SYNTAX JMS MTATST TAD LINPTR DCA SAVPTR TAD (EVEN JMS I [KEYSRCH SKP JMP SETE TAD SAVPTR DCA LINPTR TAD (ODD JMS I [KEYSRCH JMP I [SYNTAX TAD (400 SETE, TAD (2 DCA I [HANBUF JMP I MTAPAR MTATST, 0 JMS I [VERTST "M JMP I MTATST MTAFIL, 0 JMS MTATST TAD NO CIA /V3D IAC /V3D DCA I (HANBUF JMP I MTAFIL /SUPPOSED TO WORK ON ALL VERSIONS CDCODE, 0 STA JMS I [NUMCHK ECARDC TAD NUM TAD (-32 /026 SNA JMP C026 TAD (32-35 /029 SZA CLA BADCOD, JMS I [ERROR ECARDC JMS CHANGE LIST1;LIST2 JMP I CDCODE C026, JMS CHANGE LIST1;LIST3 JMP I CDCODE CHANGE, 0 TAD I CHANGE DCA P1 ISZ CHANGE TAD I CHANGE DCA P2 ISZ CHANGE CHLUP, CDF 10 TAD I P1 SNA JMP CHNGEX TAD [HANBUF /BASE OF HANDLER DCA P3 TAD I P2 CDF 0 DCA I P3 ISZ P1 ISZ P2 JMP CHLUP CHNGEX, CDF 0 JMP I CHANGE P1, 0 P2, 0 P3, 0 SYSDEA, 0 /DEASSIGN USERS IN BOOT AND CORE TAD (UDNAME&177-1 JMS I [RDAUX 0 TAD (-17 DCA TEMP TAD BTSTRP DCA XR2 TAD BTSTRP TAD (7600-AUXBUF DCA XR3 DCA I XR2 CDF 10 DCA I XR3 CDF 0 ISZ TEMP JMP .-5 JMS I [WRAUX JMP I SYSDEA PAGE TECNAM, FILENAME TECO.SV TECO, 0 DCA SA TAD (TECNAM JMS LOOKUP JMP I TECO /NOT THERE DCA BLKN JMS I [7607 100 /READ 1 PAGE FROM TECO 7000 /BUFFER BLKN, 0 JMP I [SYSERR TAD BLKN DCA BLKN2 TAD SA DCA I (7002 /REL LOC 2 IS S.A. JMS I [7607 4100 7000 BLKN2, 0 JMP I [SYSERR JMP I TECO SA, 0 LOOKUP, 0 DCA ARG1 /PTR TO FILENAME IN AC CLA IAC /LOOKUP ON SYS CIF 10 JMS I USR 2 ARG1, 0 /STARTING BLOCK 0 JMP I LOOKUP /NOT FOUND CLA CLL IAC RAL /=2 TAD ARG1+1 /-LENGHT SZL CLA /MUST BE LONGER THAN 2 6254 /IF UNDER MULTI8 SKP JMP I LOOKUP /IT WAS A SHSAVE FILE: NOT THERE TAD ARG1 ISZ LOOKUP JMP I LOOKUP /RETURN 2 WITH BLOCK # IN AC GENDVC, 0 TAD NO SZA CLA JMP I [SYNTAX JMS I [ONUM SNA JMP I [SYNTAX DCA NUCODE TAD NUCODE AND [7700 SZA CLA JMP I [NUMBIG TAD NUCODE TAD (-30 SPA CLA JMP I [NUMBIG TAD NUCODE CLL RTL RAL DCA NUCODE TAD [HANBUF DCA RR DVLUP, JMS I (GETIOT JMP I GENDVC TAD (-30 SPA CLA JMP DVLUP TAD I RR AND (7007 TAD NUCODE DCA I RR JMP DVLUP TTCOL, 0 TAD [7770 JMS I [NUMCHK EBDCC TAD NUM JMS SETMSW 7770 JMP I TTCOL SETMSW, 0 /SET MMISC IN BOOT AND MEMORY DCA MSWVAL TAD (MMISC&177 JMS I [RDAUX 0 TAD I SETMSW /GET MASK ISZ SETMSW AND I BTSTRP TAD MSWVAL DCA I BTSTRP TAD I BTSTRP CDF 10 DCA I (MMISC CDF 0 JMS I [WRAUX JMP I SETMSW MSWVAL, 0 FORT, 0 /COMMON SUB FOR FORTRANS CLL RTR RTR DCA MSWVAL /SET 7000 BITS ACM3 TAD FORT DCA FORT /GETS ADDRESS OF FORT SUB TAD I FORT DCA FORT /GET CALLING ADDRESS TAD MSWVAL JMS SETMSW 0777 /KEEP ON OTHER BITS JMP I FORT PAGE EDTNAM, FILENAME EDIT.SV BATNAM, FILENAME BATCH.SV EDIBAT, 0 /SUB FOR ADAPTING VIEW TO HARDWARE TAD (EDTNAM JMS I (LOOKUP JMP TRYBAT /NOT THERE TAD [7 /LPT IN REL.BLK. 7 DCA EDBLK TAD [177 /LITERAL POINTING AT 'LPT' JMS I [RDAUX EDBLK, 0 TAD (AUXBUF-3000 TAD I BTSTRP DCA BTSTRP /RELOCATED LPT TAD I BTSTRP /TEST WORD SZA CLA JMP TRYBAT /BAD VERSION TAD BTSTRP JMS MODEBA JMS I [WRAUX TRYBAT, TAD (BATNAM /PART FOR ADAPTING BATCH JMS I (LOOKUP JMP I EDIBAT /NOT THERE; END TAD (16 /AT 6400 IN BATCH DCA BTBLK TAD [7 /REL TEST LOC JMS I [RDAUX BTBLK, 0 TAD I BTSTRP TAD (-5600 /TEST FOR 'JMP I LPTSET' SZA CLA JMP I EDIBAT /BAD BATCH VERSION TAD (AUXBUF JMS MODEBA JMS I [WRAUX JMP I EDIBAT MODEBA, 0 DCA XR4 TAD XR3 TAD (-5 /SET XR BACK TO LIST DCA XR3 JMS I (LPGET DCA I XR4 /NOP OR CMA JMS I (LPGET DCA I XR4 /PRINT COMMAND JMS I (LPGET DCA I XR4 /PRINT2 OR NOP ISZ XR4 /SKIP 'CLA' OR 'NOP' JMS I (LPGET DCA I XR4 /SKIP IOT JMS I (LPGET CLA /SYNC LIST JMP I MODEBA SYSASS, 0 /ASSIGN DEVICE IN BOOT AND CORE JMS I [GETDEV /GET DEV NUMBER JMS I [SPACE /GO TO SECOND DEVICE TAD (UDNAME&177-1 JMS I [RDAUX /GET BOOT BLOCK 0 TAD DEVNUM TAD BTSTRP /POINT INTO TABLE DCA BTSTRP JMS I (COMBIN /HASH SECOND DEVICE DCA I BTSTRP /INTO TABLE IN BOOT TAD BTSTRP TAD (7600-AUXBUF DCA BTSTRP /POINT INTO CORE TAD I (WD1 /GET NAME AGAIN CDF 10 DCA I BTSTRP CDF 0 JMS I [WRAUX /WRITE BOOT BACK CLA IAC DCA DEVNUM /DON'T WRITE RUBBISH IN BLK 0!!! JMP I SYSASS F4SUB, 0 /FOR SETTING CCL FORTRAN DEFAULTS AC0 /FORTRAN IV JMS I (FORT /DOES NOT RETURN HERE! F5SUB, 0 AC1 /FORTRAN V JMS I (FORT F2SUB, 0 AC2 /FORTRAN II JMS I (FORT /FXSUB, 0 / AC3 /XXX? / JMS I (FORT / PAGE /6600-7177 AUXILIARY BUFFER /7000-7177 BUFFER FOR TECO CCB /7200-7577 BUFFER FOR HANDLER .ASECT SETMSG FIELD 1 *2000 .NOLIST BE RELOC 0 .IF NDF GERMAN < ESYN, TEXT /? SYNTAX ERROR/ ENUBIG, TEXT /? BAD OR TOO BIG NUMBER/ EDVNEX, TEXT /? CAN'T - DEVICE DOESN'T EXIST/ EIOSYS, TEXT \? I/O ERROR ON SYS:\ EICOBG, TEXT /? INITIAL COMMAND TOO BIG/ EOLDVE, TEXT /? OLD VERSION OF KBM/ EPAUSE, TEXT /? BAD VALUE FOR PAUSE DURATION/ EBDCC, TEXT /? BAD COLUMN COUNT/ EBADHT, TEXT /? BAD HEIGHT SPECIFIED/ EUNKAT, TEXT \? UNKNOWN ATTRIBUTE FOR DEVICE \ *.-1 NAM1, 0 NAM2, 0 0 EDVRES, TEXT /? CAN'T - DEVICE IS RESIDENT/ EOBSHD, TEXT /? CAN'T - OBSOLETE HANDLER/ E2PGHN, TEXT /? CAN'T - NOT 2-PAGE HANDLER/ EBVELT, TEXT /? BAD VERSION LETTER/ EWIDTH, TEXT /? ILLEGAL WIDTH/ ERKL8E, TEXT /? CAN'T - MUST REASSEMBLE KL8E SOURCE/ EOLBAS, TEXT /! OLD BASIC/ ECARDC, TEXT /? UNKNOWN CARD CODE/ EBERR, TEXT /? BATCH INPUT ERROR/ EBADTB, TEXT /? TAB IS TOO LARGE/ EDEVC, TEXT /? BAD DEVICE CODE/ EZERO, TEXT /? ZERO ARGUMENT/ > .IF DF GERMAN < ESYN, TEXT \? SYNTAX-FEHLER\ ENUBIG, TEXT \? ZU GROSSE ODER KEINE ZAHL\ EDVNEX, TEXT \? GERAET NICHT IM SYSTEM\ EIOSYS, TEXT \? L/S-FEHLER AUF SYS:\ EICOBG, TEXT \? 'INIT'-BEFEHL ZU LANG: 1-5 ZEICHEN\ EOLDVE, TEXT \? SYSTEM IST ALT ODER BOOTSTRAP ZERSTOERT\ EPAUSE, TEXT \? ZU LANGE PAUSE-ZEIT: 1-1023\ EBDCC, TEXT \? ZU VIELE SPALTEN VERLANGT: 1-7\ EBADHT, TEXT \? ZU GROSSE HOEHE VERLANGT: 1-127\ EUNKAT, TEXT \? UNBEKANNTER BEFEHL FUER \ *.-1 NAM1, 0 NAM2, 0 0 EDVRES, TEXT \? GERAET IST RESIDENT ODER MULTI8-KANAL\ EOBSHD, TEXT \? HANDLER IST ZU ALT\ E2PGHN, TEXT \? UNMOEGLICH - 2-SEITEN HANDLER\ EBVELT, TEXT \? FALSCHE VERSIONS-BEZEICHNUNG\ EWIDTH, TEXT \? ZU BREIT: 1-255 ODER MEHRFACHES VON 8\ ERKL8E, TEXT \? KL8E HANDLER FALSCH\ EOLBAS, TEXT \! BASIC.SV WURDE NICHT ANGEPASST\ ECARDC, TEXT \? KARTEN-KODE UNBEKANNT: 26 ODER 29\ EBERR, TEXT \? BATCH LESE-FEHLER\ EBADTB, TEXT \? LPT-TABULATOR ZU GROSS: 1-63\ EDEVC, TEXT \? 'DEVICE CODE' NICHT ERLAUBT\ EZERO, TEXT \? ARGUMENT = 0\ > RELOC PAGE MVER, TEXT \OS/8 SET V4\ *.-1 VERSL^100+PATCHL 0000 .IF NDF GERMAN < MHELP1, TEXT /SET DEV: [NO] ATTRIB [N]/ MHELP2, TEXT /VERSION/ MHELP3, TEXT /HELP/ MGAG1, TEXT /A FUNNY THING HAPPENED TO ME ON THE WAY TO THE COMPUTER ROOM./ MGAG2, TEXT /A PANHANDLER CAME UP TO ME AND SAID,/ MGAG3, TEXT /"CAN YOU SPARE ME $25,000 FOR A CUP OF COFFEE?"/ MGAG4, TEXT /"WHY SO MUCH?", I ASKED IN AMAZEMENT./ MGAG5, TEXT /"THINGS HAVE BECOME SO AUTOMATED", HE REPLIED,/ MGAG6, TEXT /"THAT THE ONLY WAY I CAN ORDER IT/ MGAG7, TEXT /IS WITH A COMPUTER ORDER FORM"./ > .IF DF GERMAN < MHELP1, TEXT /SETZE GERAET: [KEIN] BEFEHL [N]/ MHELP2, TEXT /VERSION/ MHELP3, TEXT /HILFE/ MGAG1, TEXT / DDDD A TTTTT A PPPP L A N N/ MGAG2, TEXT / D D A A T A A P P L A A NN N/ MGAG3, TEXT / D D A A T A A P P L A A N N N/ MGAG4, TEXT / D D AAAAA T AAAAA PPPP L AAAAA N NN/ MGAG5, TEXT / D D A A T A A P L A A N N/ MGAG6, TEXT / DDDD A A T A A P LLLLL A A N N/ MGAG7, TEXT / ======================================================/ > BRSET, -2305;SET /SE -2605;VERSION /VE -1005;HELP /HE 0 BRIN, -377;RUBOUT -217;GT /^O -".;GT /IGNORE '.' BATCH MONITOR -203;CTRLC /^C -212;LF /LINE FEED -215;CR /CARRIAGE RETURN -"$;ESCAPE /BATCH ESCAPE=$ -375;ESCAPE /ALTMODE -376;ESCAPE /ALTMODE (2ND FLAVOR) -233;ESCAPE /ESCAPE -225;CTRLU /^U -200;GT /IGNORE NULLS -223;GT /IGNORE ^S 0 BRCOHY, -":;COLN -" ;COLN -"-;HYPH 0 / LOC YES NO KBMTBL, AUXBUF+313; 0210; 1361 AUXBUF+314; 1313; 2020 AUXBUF+316; 1324; 7240 AUXBUF+317; 4423; 3020 AUXBUF+322; 1313; 1440 AUXBUF+224; 7555; 7403 AUXBUF+225; 1207; 1302 AUXBUF+226; 7557; 7402 AUXBUF+227; 1207; 1302 0 CDTBL, AUXBUF+135; 0210; 1101 AUXBUF+136; 1335; 2024 AUXBUF+140; 1346; 7240 AUXBUF+141; 4466; 3024 AUXBUF+144; 1335; 1420 AUXBUF+33; 7555; 7403 AUXBUF+34; 5207; 5321 AUXBUF+35; 7557; 7402 AUXBUF+36; 5207; 5321 0 PSTBL, HANBUF+217; 1343; 7420 HANBUF+220; 3264; 5250 HANBUF+230; 5327; 5245 HANBUF+327; 7440; 1375 HANBUF+330; 5245; 3326 HANBUF+331; 2301; 2275 HANBUF+332; 5331; 4264 HANBUF+333; 2264; 2301 HANBUF+334; 5227; 5332 HANBUF+342; 7410; 3326 HANBUF+343; 7700; 5354 0 TABTBL, HANBUF+367; 1344; 1241 HANBUF+370; 7040; 4264 HANBUF+371; 0277; 1277 HANBUF+372; 1344; 0344 HANBUF+373; 3277; 7640 HANBUF+374; 5324; 5367 0 /FIXED FOR V3D: LIST1, 104;105;106 114;115;116 124;125;126;127 134;135;136 0 LIST2, 3203;4007;3502 7514;0577;3637 0104;1211;3374;0641 7316;3410;1376 LIST3, 7735;4076;0774 3314;1002;0305 3204;1273;3606;1341 3716;1175;3401 DBCE= 6576 DBTD= 6574 DBSS= 6577 DBST= 6570 LIC= 6667 LLS= 6666 LSF= 6661 LPCI= 0000 /????? LPCB= 6575 LPSC= 6576 LPSF= 6572 KIE2= 6305 TLS2= 6316 TSF2= 6311 KIE3= 6325 TLS3= 6336 TSF3= 6331 /LIST FOR LPT CHANGES ; EACH 8 LONG! LPIOTL, DBCE;CMA;DBTD;DBSS;DBST;CLA;0;0 /LP78 LIC;NOP;LLS;NOP;LSF;CLA;0;0 /LA8A LPCI;NOP;LPCB;LPSC;LPSF;SKP CLA;0;0 /LX180 KIE2;NOP;TLS2;NOP;TSF2;CLA;0;0 /SLU2 KIE3;NOP;TLS3;NOP;TSF3;CLA;0;0 /SLU3 SLUX, 0;NOP;0;NOP;0;CLA;0;0 /SLUX IS SET BY LPCODE MAIN, -0; DEVICE TTY; TTYTBL -1; DEVICE PTR; PTRTBL -2; DEVICE PTP; PTPTBL -3; DEVICE CDR; CDRTBL -4; DEVICE LPT; LPTTBL -16; DEVICE TC; BLATBL -20; DEVICE MTA; MTATBL -21; DEVICE TD8; BLATBL -22; DEVICE BAT; BLATBL -23; DEVICE RK05; BLATBL -24; DEVICE NULL; BLATBL -25; DEVICE RX01; BLATBL -26; DEVICE RL01; BLATBL -31; DEVICE RL01; BLATBL -32; DEVICE RX02; BLATBL -33; DEVICE VXA1; BLATBL -34; DEVICE VXA2; BLATBL -35; DEVICE VXA3; BLATBL -37; DEVICE TU58; BLATBL -40; DEVICE SI43; BLATBL -41; DEVICE RB01; RBXTBL -42; DEVICE RB07; RBXTBL -50; DEVICE VMT0; BLATBL -51; DEVICE VMT1; BLATBL -52; DEVICE VMT2; BLATBL -53; DEVICE VMT3; BLATBL -54; DEVICE VMT4; BLATBL -55; DEVICE VMT5; BLATBL -56; DEVICE VMT6; BLATBL -57; DEVICE VMT7; BLATBL -60; DEVICE COMM; BLATBL 1 /TABLE ENDS WITH A POSITIVE NON-ZERO NUMBER TTYTBL, WIDTH;TTWIDTH BREITE;TTWIDTH CODE;TTCODE KODE;TTCODE ECHO;TTECHO LC;TTLC KLEIN;TTLC PAYGE;TTPAGE TAB;TTTAB GAG;TTGAG PAUS;TTPAUS /V3D HGHT;TTHGHT /V3D HOEHE;TTHGHT SCOPP;TTSCOP /V3D VIDEO;TTSCOP COL;TTCOL /V3D KOL;TTCOL ESC;TTESC /V3D AROW;TTAROW /V3D PFEIL;TTAROW 0 LPTTBL, WIDTH; LPWDTH BREITE; LPWDTH LC; LPLC KLEIN; LPLC LV8E; LPLV LA8A; LP8A LA78; LP78 LX180; LPLX SLU2; LPSLU2 SLU3; LPSLU3 PAYGE; LPPAGE HGHT; LPHGHT HOEHE; LPHGHT TAB; LPTAB PAUS; LPPAUS SIMU; LPFILL AROW; LPAROW PFEIL; LPAROW ESC; LPESC CODE; LPCODE KODE; LPCODE 0 SYSAUX, INIT; SYSINI OS8; SYSOS8 OS78; SYS78 BLK; GENBLK ASS; SYSASS DEA; SYSDEA F2; F2SUB F4; F4SUB F5; F5SUB 0 AUX, LOC;GENLOC FILES;GENFIL DATEI;GENFIL READO;GENREA LESEN;GENREA VERS;GENVER DVCO;GENDVC /V3D BLK;GENBLK /V3D 0 MTATBL, PARITY;MTAPAR FILES;MTAFIL DATEI;MTAFIL 0 RBXTBL, PDP8;RBX8 VT78;RBX7 0 PTRTBL, ZBLOCK 4 0 PTPTBL, ZBLOCK 4 0 BLATBL, ZBLOCK 4 0 CDRTBL, CODE;CDCODE KODE;CDCODE 0 AROW, "A;"R;"R;"O;"W;0 ASS, "A;"S;"S;4000+"I;4000+"G;4000+"N;0 BLK, "B;"L;"O;"C;"K;0 BREITE, "B;"R;"E;"I;"T;0 CODE, "C;"O;"D;"E;0 COL, "C;"O;"L;0 DATEI, "D;"A;"T;"E;"I;0 /-STRUKTURIERT DEA, "D;"E;"A;4000+"S;4000+"S;0 DVCO, "D;"V;"C;4000+"O;4000+"D;4000+"E;0 ECHO, "E;"C;"H;"O;0 ESC, "E;"S;"C;4000+"A;4000+"P;4000+"E;0 EVEN, "E;4000+"V;4000+"E;4000+"N;0 FILES, "F;"I;"L;"E;4000+"S;0 F2, "F;"2;0 /FORTRAN-II F4, "F;"4;0 /FORTRAN-IV F5, "F;"5;0 /FRUN ETC GAG, "G;"A;"G;0 HGHT, "H;"E;"I;"G;"H;"T;0 HOEHE, "H;"O;0 /ALSO 'HOCH' INIT, "I;"N;"I;"T;0 KLEIN, "K;"L;"E;"I;"N;0 /-SCHRIFT KODE, "K;"O;"D;"E;0 KOL, "K;"O;"L;0 LA8A, "L;"A;"8;"A;0 LA78, "L;"A;"7;"8;0 LC, "L;"C;0 LESEN, "L;"E;"S;"E;0 /LESE-NUR LOC, "L;"O;"C;4000+"A;4000+"T;4000+"I;4000+"O;4000+"N;0 LV8E, "L;"V;4000+"8;4000+"E;0 LX180, "L;"X;"1;"8;"0;0 ODD, "O;4000+"D;4000+"D;0 OS8, "O;"S;"8;0 OS78, "O;"S;"7;"8;0 PARITY, "P;"A;"R;4000+"I;4000+"T;0 /ALSO 'PARITAET' PAYGE, "P;"A;"G;0 /ALSO 'PAGINA' PAUS, "P;"A;"U;"S;"E;0 PDP8, "P;"D;"P;0 /PDP8 PFEIL, "P;"F;"E;"I;"L;0 READO, "R;"E;"A;"D;0 /-ONLY SCOPP, "S;"C;"O;"P;"E;0 SIMU, "S;"I;"M;"U;0 /SIMULATED FORM-FEED SLU2, "S;"L;"U;"2;0 SLU3, "S;"L;"U;"3;0 TAB, "T;"A;"B;0 VIDEO, "V;"I;"D;"E;"O;0 VERS, "V;"E;"R;4000+"S;4000+"I;4000+"O;4000+"N;0 VT78, "V;"T;"7;"8;0 WIDTH, "W;"I;"D;"T;"H;0