/56 CCL FOR OS/8 V3D / / / / / / / / / /COPYRIGHT (C) 1974,1975,1976,1977 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 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. / / / / / / / / / / MOFILE=7600 MIFILE=7617 MPARAM=7643 XR2=15 XR=16 TXR=17 AMFLAG=17 T=20 TT=21 DEF=22 NAME1=23 NAME2=24 NAME3=25 NAME4=26 NMBASE=27 DEV1=30 DEV2=31 DELIM=32 DEFALT=33 /POINTS TO DEFAULT EXTENSION LIST LXR=34 CLXR=35 PTR=36 DATWD=7666 BATERR=7000 /JMP HERE TO ABORT BATCH BATOUT=7400 /JMS HERE TO PRINT ON BATCH LOG BATSPL=7200 /JMS HERE TO PERFORM SPOOLING WITH DEFAULT EXT IN AC OS78BIT=7771 BEGLN=1000 /CCL STARTING ADDRESS: 12000 /STARTING ADDRESS: 12001 /CHAIN STARTING ADDRESS:12002 / JOB STATUS WORD = 2003 /************************************************** / / SAVING CCL / / .LOAD CCL / .SAVE SYS CCL;12001=2103 / .R CCL / /************************************************** CCLSW=435 DEASADR=427 PRQMRK=1357 GETCCL=1362 OV=1375 MSOVL2=55 CCLBLK=67 /BLOCK ON SYS: USED BY CCL CCLTAB="G /MUST BE UPDATED IF TABLES CHANGE CCLNUM="1 CCLVER="F /CCL VERSION # /*** NOTE: VERSION E OF CCL WAS FOR IN-HOUSE USE ONLY. /USE OF SEMICOLONS WITH CCL VERSION I OR LATER /REQUIRES BATCH VERSION 7 OR LATER. /USE OF BASIC COMMAND REQUIRES V3D BASIC OR LATER HNDLR=4400 BFR=5000 /MEMORY ALLOCATION: /0 4400-4777 INPUT HANDLER FOR CD / ALSO, SEMICOLON BUFFER /0 5000-5177 PRE-EXTENSION @ BUFFER /0 5200-5577 @ BUFFER /0 1000-1777 /COMMAND LINE [EACH @ FILE RESTRICTED TO 1 BLOCK] /0 2000-2777 /LINE BUFFER EXTENSION / CHANGES SINCE FIELD RELEASE VERSION: /1. RECURSIVE 'U' BUG FIXED /2. INTERNAL STRUCTURE OF CCL KEYWORD TABLE CHANGED /3. BUG RE REWRITING BLOCK CONTAINING PTR TO CORRECT FORTRAN FIXED /4. .SV PARTS OF FILENAMES REMOVED FROM TABLE TO SAVE SPACE /5. COMPARE PASSES ALTMODE /6. TTY BECAME DEFAULT FOR COMPAR, DIRECT, AND MAP /7. BUG RE PASSING DEFAULT * FIXED /8. .LS FORM OF .CREF COMMAND REMOVED /9. BUG CONCERNING PROCESSOR SWITCHES FIXED /10. CCL SWITCH ALLOWED AFTER =N OPTION /11. BUG RE 'BAD SWITCH OPTION' MESSAGE FIXED /12. EXTRA SPACES NOW ALLOWED BEFORE CCL ARGUMENT /13. 'DOES NOT EXIST' MESSAGE NOW SPELLED CORRECTLY /14. 'BAD CCL SWITCH' MESSAGE ADDED /15. CCL EDIT # CHANGED TO CCL VERSION # /16. .EX CHAINS TO BCOMP NOT BASIC FOR .BA FILES /17. MUNG PTR: NOW WORKS /18. FIXED BUG RE MUNG /19. FIXED BUG RE CD FOR FILE > 2047 BLKS /20. FIXED BUG RE MAKE PTR: /VERSION B FIXES: /21. ALLOWED 'EDIT' TO COPY FILE EXTENSION /22. FIXED BUG RE .CCL ON WRITE-LOCKED DEVICE /23. FIXED DATE PROBLEM /24. ALLOWED FF AND VT IN AN INDIRECT FILE TO BE IGNORED /VERSION C FIXES: /25. FIXED BUG RE SPACES AND SLASHES IN MUNG TEXT ARGUMENT /26. ALLOWED EDIT COMMAND TO USE SAME OUT DEVICE / AS IN DEVICE (IF NONE SPECIFIED) /27. ADDED MORE SYNTAX CHECKING TO ZERO COMMAND /VERSION D CHANGES: /28. ALLOWED EDIT A COMBN, 0 JMS USUAL 0216 YABSLDR JMP I COMBN COMRL, 0 JMS USUAL 2214 LOADE, YLOAD /MAY BECOME YLOADER JMP I COMRL COMPA, 0 JMS USUAL 2001 YPAL8 JMP I COMPA COMFT, 0 JMS USUAL 0624 FORTE, YF4 /COULD BE CHANGED TO YFORT BY .R CCL JMP I COMFT COMBA, 0 JMS USUAL 0201 YBCOMP JMP I COMBA COMRA, 0 JMS USUAL 2201 YRALF JMP I COMRA COMSB, 0 JMS USUAL 2302 YSABR JMP I COMSB COMRB, 0 JMS USUAL 2202 YLINK JMP I COMRB COMMA, 0 JMS USUAL 1501 YMACREL JMP I COMMA COMBI, 0 JMS USUAL 0211 YBATCH JMP I COMBI COMLD, 0 JMS USUAL 1404 YFRTS JMP I COMLD DEFILE, 0 /PTR TO FILENAME TO CHAIN TO /COMLS, 0 / TAD I (EXTLS / DCA SETEXT / TAD (YCREF / DCA DEFILE / ISZ I (DONB /CREF FOO.LS MAKES NO BINARY / JMP I COMLS RDMON, 0 CDF 10 CIF 0 CLA JMS I (7607 0400 /READ 2 RECORD 2000 /LOCATION 2000 FIELD 0 7 /BLOCK 7,10 JMP I (IOERR JMP I RDMON USUAL, 0 TAD I USUAL DCA SETEXT ISZ USUAL TAD I USUAL DCA DEFILE ISZ USUAL JMP I USUAL UNKN, 0 TAD SETEXT SZA TAD T /NEG OF SWITCH REQUEST SZA CLA JMP I (CCERA /CAN'T HAVE 2ND DEFAULT EXTENSION TAD T CIA DCA SETEXT /SET DEFAULT EXTENSION TAD DEFALT /SEE IF IT'S IN COMMAND'S SEARCH LIST DCA DEF TAD SETEXT JMS I (EXTLUK SNA CLA /DID WE FIND IT? JMP I (CDER4 /NO ISZ DEF /YES / TAD I (JMSUB /ALLOW RECURSIVE CALL / DCA HOLD TAD I DEF JMS I (JMSUB /CALL ITS SUBR / TAD HOLD /V1A RECURSIVE CALL NO LONGER THREATENS / DCA I (JMSUB JMP I UNKN SETEXT, 0 /EXT WHICH HAS BEEN SET BY A CCL SWITCH SEMERR, TAD (SEMSG-1 DCA UNKN TAD I UNKN DCA .+2 JMS I (PRMESG SEMSG1 WRITFT, JMS I (LOOK YCCL JMP I (IOERR /CCL.SV NOT FOUND TAD I (BLK TAD (4 /*3400 IS 4TH BLOCK OF CCL NOT COUNTING CCB DCA FBLK CDF 10 CIF 0 JMS I (7607 4210 /WRITE 1 RECORD FROM FIELD 1 3400 /LOCS 3400-3777 FBLK, 0 JMP I (IOERR CIF CDF 0 JMP I (7605 PAGE CD, 0 JMS I (200 13 /RESET ALL HANDLERS JMS I (CDINIT BEGGRP, TAD OUTSW SNA CLA TAD I (BEGDIF /DIFF BETWEEN INPUT & OUTPUT AREAS TAD (MOFILE-1 DCA CLXR JMS I (GETSPC JMS I (ASSIGN TAD OUTSW SNA CLA TAD I (LIMDIF /DIFF BETWWEN END OF OUTPUT & INPUT AREAS TAD I (OUTLIM /END OF OUTPUT AREA TAD CLXR SMA CLA JMP I (CDER1 JMS I (CCLSWT TAD OUTSW SNA CLA LKUPSW, JMP INFILE /ZEROED IF IN "SPECIAL DECODE" MODE TAD I (DVICE JMS PCLXR TAD NAME1 JMS PCLXR TAD NAME2 JMS PCLXR TAD NAME3 JMS PCLXR TAD NAME4 JMP LSTPUT INFILE, JMS I (LOOKUP JMS PCLXR /STORE LENGTH AND DEV NUMBER TAD I (LNAME /GET BLOCK LSTPUT, JMS PCLXR TAD OUTSW SNA CLA TAD I (FLAG CLL RTL SPA CLA /FEATURE ENABLED? TAD LKUPSW SNA CLA JMP DLOOK /IN SPECIAL MODE OR ON OUTPUT SIDE TAD DONB SZA CLA JMP NBS TAD (7600 /V1A NOW TAKES ARG IN AC JMS I (NMOVE /MOVE NAME TO OUTPUT FILE NAMES JMP DLOOK NBS, DCA DONB /ZERO 1ST OUTPUT FILE TAD (7577 DCA XR2 DCA I XR2 DCA I XR2 DCA I XR2 DCA I XR2 DCA I XR2 DLOOK, STA DCA I (DVFLAG TAD DELIM SNA JMP I CD TAD (-"[ SNA JMP I (OLENGT TAD ("[-", SNA JMP I (FILLP /**** JUMPING INTO ROUTINE (IS THIS A BUG?) TAD (",-"< SNA JMP BKAROW TAD ("<-"= SZA CLA JMP I (CDER2 /BAD CHAR / THIS STUFF WOULD ALLOW = AS WELL AS < AND _ /*** HAVE TO FIX 'BKA' ROUTINE / JMS I (GLXR / JMS I (DECODE / STL / STA /LINK=0 MEANS LETTER / TAD LXR /NOW LINK=1 MEANS LETTER / DCA LXR / SZL / JMP BKAROW DCA I (NUMFUJ JMS I (NUMBER DCA I (MPARAM+3 CLA CLL CML RAR AND I (MPARAM-1 /PRESERVE ALTMODE TAD I (HIORD DCA I (MPARAM-1 JMS I (CCLSWT JMP DLOOK BKAROW, ISZ OUTSW JMP I (CDER2 /TWO BACK-ARROWS TAD LXR /GET PTR TO ARROW DCA I (ARLOC /SAVE IT ('EDIT' MIGHT NEED IT) JMP BEGGRP PCLXR, 0 ISZ CLXR DCA I CLXR JMP I PCLXR DONB, 0 /ENTRY PT USED AS FLAG JMP I DONB OUTSW, -1 /-1 MEANS ON OUTPUT SIDE, 0 ON INPUT SIDE P6, SETDEV TVDEV PAGE NUMBER, 0 SZA CLA TAD (NUM&177+1200-SKP TAD (SKP DCA NUMADD/SET NUMADD TO EITHER "SKP" OR "TAD NUM" DCA HIORD NUMLP, DCA NUM JMS I (GCH ISZ NUMKNT SKP JMP EONUM2 CMA TAD NUMFUJ TAD ("8 /TEST INPUT CHARACTER FOR RANGE CLL CMA /0-7 IF NUMFUJ=0 TAD (10 /0-9 IF NUMFUJ=2 TAD NUMFUJ SNL JMP EONUM DCA T CLA CLL CMA RTL DCA DELIM TAD NUM ROTLP, CLL RAL DCA NUMX TAD HIORD RAL NUMSKP, SPA /MODIFIED BY # JMP I (CDER5 DCA HIORD TAD NUMX ISZ DELIM JMP ROTLP NUMADD, TAD NUM /SKP IF OCTAL TAD NUM TAD T JMP NUMLP EONUM, TAD ("0 EONUM2, DCA DELIM TAD NUMKNT SPA CLA JMP I (CDER5 /FEWER THAN CORRECT NUMBER OF DIGITS TAD NUM JMP I NUMBER NUM, 0 NUMFUJ, 0 NUMKNT, 0 /SET TO -N-1 TO FORCE N DIGITS HIORD, 0 ASSIGN, 0 TAD CLXR AND I (DVFLAG TAD I (OUTLIM SMA SZA CLA /CHECK FOR OUTPUT OR FIRST INPUT JMP ASNORM /IF DEVICE WAS SPECIFIC, /OR IF WE ARE ON THE INPUT SIDE, /PROCEED NORMALLY TAD NAME1 SNA CLA JMP ASGNST TAD DFLTNM+1 DCA DEV2 TAD DFLTNM DCA DEV1 ASNORM, TAD DEV1 DCA AS+1 TAD DEV2 DCA AS+2 TAD I (OUTSW SNA CLA /DON'T LOAD HANDLER /IF WE ARE ON OUTPUT SIDE OF "_" TAD NAME1 SPKLG1, SNA CLA /OR THERE IS NO FILE NAME TO LOOK UP TAD GETHND /GETHND=11 NORMALLY, /0 IF IN "SPECIAL DECODE" MODE IAC DCA AS TAD (HNDLR+1 /ALLOW TWO PAGE HANDLERS DCA ASADR CIF 10 JMS I (200 NUMX, AS, 0 0 0 ASADR, HNDLR+1 JMP I (CDER0 TAD AS+2 ASGNST, DCA I (DVICE JMP I ASSIGN DFLTNM, DEVICE DSK GETHND, 11 /1+11=12 (1=FETCH, 12=INQUIRE) LOVE, 0 TAD NAME1 TAD (-1417 SZA CLA JMP I LOVE TAD NAME2 TAD (-2605 SZA CLA JMP I LOVE TAD NAME3 TAD NAME4 SZA CLA JMP I LOVE JMS I (PRINT LOVMES JMP I LOVE FILDMY, FILENAME DUMMY.SV SEMSG, SEMSG1 SEMSG2 SEMSG3 SEMSG4 PAGE /GETS A NAME FROM FIELD ZERO BUFFER VIA LXR /RETURNS WITH DELIMETER IN AC /GIVES ERROR MESSAGE IF NAME IS BAD TN, /DON'T CALL CCLSWT FROM GNAME UNLESS THIS IS MOVED GNAME, 0 DCA NAME1 DCA NAME2 DCA NAME3 DCA NAME4 TAD (NAME1 DCA NMBASE CLA CMA DCA PERDSW DCA NAMECT JMS I (GCH TAD (-"# SNA JMP NUMCON TAD ("# SKP GTNMLP, JMS I (GCH DCA DELIM TAD DELIM TAD (-"? SZA TAD ("?-"* SNA STARSW, JMP I (CDER6 /"JMP STARNM" /IF "SPECIAL DECODE" MODE TAD ("*-". SNA CLA JMP PERIOD TAD DELIM JMS I (DECODE JMP LV STARNM, CLA /THIS CODE HANDLES *'S AND ?'S CORRECTLY TAD DELIM AND (77 DCA DELIM TAD NAMECT TAD (-6 SMA CLA JMP GTNMLP TAD NAMECT CLL RAR TAD NMBASE DCA TT TAD DELIM SNL JMS I (ROTL TAD I TT DCA I TT ISZ NAMECT JMP GTNMLP PERIOD, TAD NAME1 SZA CLA ISZ PERDSW JMP I (CDER7 /NULL NAME OR DOUBLE EXTENSION ISZ NMBASE TAD (4 DCA NAMECT JMP GTNMLP CCLSWT, 0 TAD DELIM TAD (-"- SZA CLA JMP I CCLSWT TAD I (OUTSW SZA CLA JMP I (CDER4 /CCL EXT ON OUTPUT FILE TAD (SWTCHS DCA DEF JMS GETL JMP I (CDER44 /NON-ALPHANUMERIC CCL SWITCH JMS I (ROTL DCA TN JMS GETL JMP XLK2 /ONE CHAR CCL SWITCH TAD TN DCA TN JMS GETL XLK2, SKP CLA /2 CHAR CCL SWITCH JMP I (CDER44 /3 CHAR CCL-SWITCH TAD TN JMS I (EXTLUK CLA ISZ DEF TAD I DEF DCA GETL /GET PTR TO ARGUMENT PAIR TAD I GETL /GET SUBROUTINE DCA PERDSW ISZ GETL TAD I GETL /GET ARGUMENT JMS I PERDSW /CALL SUBR, ARG IN AC JMP CCLSWT+1 GETL, 0 JMS I (GCH DCA DELIM TAD DELIM JMS I (DECODE JMP I GETL /NON-ALPHANUM IN CCL SWITCH CLA TAD DELIM AND (77 ISZ GETL JMP I GETL NUMCON, JMS I (NUMC LV, CLA TAD DELIM JMP I GNAME PERDSW, 0 NAMECT, 0 PAGE LOOKUP, 0 DCA LNAME TAD NAME1 SNA CLA JMP LKUPST TAD I (PERDSW TAD NAME4 SNA CLA CLA IAC /FORCE NAMERM NON-0 IF . AND NO EXT TAD NAME4 DCA NAMERM /REMEMBER TYPED EXTENSION TAD DEFALT DCA DEF TAD I (SETEXT SNA /HAS AN EXTENSION BEEN SET? TAD NAMERM /NO SNA /DOES FILE HAVE EXTENSION? JMP EXT2 /NO EXTENSION TYPED OR SET, DO SUCCESSIVE LOOK-UPS JMS EXTLUK /LOOK FOR EXTENSION SNA CLA /DID WE FIND IT? JMP EXT3 /NO, FORCE NULL EXTENSION TO MATCH EXT2, TAD I DEF IAC SNA CLA JMP NEXTEXT /IGNORE -1'S TAD NAMERM SZA CLA JMP EXT3 TAD I DEF DCA NAME4 /SET NEW EXTENSION EXT3, TAD (NAME1 DCA LNAME TAD I (AS+2 JMS I (200 2 LNAME, 0 /NAME1 LENGTH, 0 JMP LFAILD ISZ DEF /POINT TO FOLLOW-UP SUBROUTINE TAD I DEF JMS JMSUB /CALL IT TAD LENGTH CLL TAD (400 SNL CLACON, 7600 /CLA CLL RTL RTL AND (7760 LKUPST, TAD DVICE JMP I LOOKUP LFAILD, TAD NAMERM SNA CLA /WAS THERE AN EXPLICIT EXTENSION? TAD I DEF /NO - WAS THERE A DEFAULT EXTENSION? SNA CLA JMP I (CDER3 /NO DEFALT EXTENSION OR YES EXPLICIT EXTENSION NEXTEXT,ISZ DEF /NO EXPLICIT EXT AND YES DEFAULT EXT ISZ DEF /POINT TO NEXT POSSIBLE DEFAULT EXTENSION JMP EXT2 /AND TRY FOR IT NAMERM, 0 DVICE, 0 EXTLUK, 0 CIA DCA T XLUK, TAD I DEF SNA /AT NULL? JMP I EXTLUK /YES TAD T /NO SNA CLA /MATCH? JMP MAT /YES ISZ DEF /NO ISZ DEF /POINT TO NEXT ENTRY JMP XLUK /TRY AGAIN MAT, TAD I DEF /RETURN WITH IT IN AC JMP I EXTLUK TS, ZERSUB, 0 TAD I (7601 SNA CLA /WAS FILENAME SPECIFIED ON ZERO CMD? TAD I CLACON /OR WAS NO OUT DEVICE SPECIFIED? SNA CLA JMP I (CDER2 /YES... ERROR JMP I ZERSUB /NO, OKAY. IOERR, JMS I (PRMESG SYSER EXSUB, 0 TAD BASPTR /PUSH PTR BACK TO BEGIN OF ENTRIES JMS I (REMEM /REMEMBER THIS IN DEPENDENT WORD 2 JMP I EXSUB JMSUB, 0 SNA JMP I JMSUB DCA TS JMS I TS JMP I JMSUB SPOOLIT,0 JMS I (BATCH /IS BATCH RUNNING? JMP I SPOOLIT /NO DCA CB /YES TAD I DEFALT TAD (-5200 SNA CLA TAD I DEFALT /LEAVE 5200 IN AC IF SPECIAL MODE CB, HLT /CIF TO FIELD OF BATCH JMS I (BATSPL /ALLOW BATCH TO SPOOL STUFF JMP I SPOOLIT GOO, TAD PTR BASPTR, DCA BASPTR JMP I (GO PAGE SLSHCH, 0 DCA DELIM TAD (MPARAM-1 DCA T TAD DELIM JMS DECODE JMP CDER8 SZL TAD (32 CMA STL /THE FOLLOWING TURNS /ON THE CORRECT OPTION BIT DCA TT SLSHLP, SZL ISZ T RAR SNL ISZ TT JMP SLSHLP DCA TT TAD TT CMA AND I T TAD TT DCA I T JMP I SLSHCH /THIS ROUTINE DETERMINES IF THE CHARACTER IN THE AC IS A LETTER OR DIGIT /IF LETTER, RETURNS TO RET+1 WITH LETTER-"A IN AC AND LINK=0 /IF DIGIT, RETURNS TO RET+1 WITH DIGIT-"0 IN AC AND LINK=1 /IF NEITHER, RETURNS TO RET WITH CHAR-"A IN AC. DECODE, 0 TAD (-"9-1 /MIGHT BE CALLED WITH ANY DF CLL TAD ("9+1-"0 SZL JMP DCDYES TAD ("0-"Z-1 CLL CML TAD ("Z-"A+1 SNL DCDYES, ISZ DECODE JMP I DECODE CDER8, CLA JMS I (PRMESG BADOPT ZEROCD, 0 TAD (-42 /AC MAY BE NON-0 DCA T TAD (MOFILE-1 DCA XR DCA I XR /ZERO THE COMMAND DECODER OUTPUT AREA ISZ T JMP .-2 JMP I ZEROCD GCH, 0 JMS GLXR TAD (-240 SNA JMP GCH+1 TAD (240-"/ SNA JMP SLASH TAD ("/-"( SNA JMP OPENP TAD ("( JMP I GCH SLASH, JMS GLXR JMS SLSHCH /*** CAN'T PUT /A:VAL HERE BECAUSE GCH AINT RECURSIVE JMP GCH+1 OPENP, JMS GLXR TAD (-") SNA JMP GCH+1 TAD (") JMS SLSHCH JMP OPENP GLXR, 0 CDF 0 ISZ LXR TAD I LXR CDF 10 JMP I GLXR OLENGT, TAD I (OUTSW AND NAME1 /[N] IS ONLY LEGAL /ON THE OUTPUT SIDE OF THE "_" SNA CLA /AND ONLY AFTER A FILE NAME JMP I (CDER2 TAD (-4 TAD CLXR DCA NMBASE CLA CLL CML RTL DCA I (NUMFUJ /SET "NUMBER" TO ACCEPT /DIGITS 8 AND 9 STA /ALLOW DECIMAL JMS I (NUMBER CLL RTL RTL AND (7760 TAD I NMBASE DCA I NMBASE CDF 0 TAD DELIM TAD (-"] /IS THERE A CLOSING BRACKET? SNA /IF NOT, /"DLOOK" ROUTINE WILL DETECT IT JMS GCH DCA DELIM JMP I (DLOOK BASUB, 0 TAD (200 /SET /Q SWITCH DCA I (MPARAM+1 JMP I BASUB PAGE PRMESG, 0 CLA TAD I PRMESG DCA .+2 JMS PRINT HLT LEAVE, JMS I (TWAIT /V3D TCF CIF CDF 0 TAD FATALFLG SNA CLA JMP I (7605 FATALFLG,0 /CIF CDF BATCH FIELD IF WANT TO ABORT JMP I (BATERR PRWD, 0 DCA T TAD T TTY212, RTR RTR RTR JMS PCHAR TAD T JMS PCHAR JMP I PRWD PCHAR, 0 AND (77 SNA JMP I PCHAR /IGNORE NULLS TAD (240 AND (77 TAD (240 /CAN'T USE 'TTY240' JMS TYPE JMP I PCHAR PRNAME, 0 TAD NAME1 JMS PRWD TAD NAME2 JMS PRWD TAD NAME3 JMS PRWD TAD NAME4 SNA CLA JMP I PRNAME TAD (256 JMS PCHAR TAD NAME4 JMS PRWD JMP I PRNAME TYPE, 0 DCA TE2 JMS I (BATCH JMP TTYOUT DCA CIFB CIFB, HLT /REPLACED BY CIF BATCH FIELD TAD TE2 JMS I (BATOUT TAD TE2 TAD (-"# TTY240, SZA CLA JMP I TYPE TAD CIFB IAC /CONVERT CIF TO CIF CDF DCA FATALFLG JMP I TYPE TTYOUT, TAD TE2 TAD (-"# /DON'T TYPE #'S SNA CLA JMP I TYPE TAD T7600 KRS TAD (-7603 SNA JMP LEAVE TAD (203-217 SNA CLA JMP I TYPE TAD TE2 TJUMP, JMP .+3 TSF JMP .-1 TLS T7600, 7600 TAD (7000 DCA TJUMP JMP I TYPE PRINT, 0 DCA CRLF /AC NON-0 MEANS DON'T CRLF TAD I PRINT ISZ PRINT DCA TE PRINTP, CDF 0 TAD I TE CDF 10 JMS PRWD CDF 0 TAD I TE CDF 10 ISZ TE AND (77 SZA CLA JMP PRINTP TAD CRLF SNA CLA JMS CRLF JMP I PRINT TE, 0 TE2, 0 CRLF, 0 TAD (215 JMS TYPE TAD TTY212 JMS TYPE JMP I CRLF CDER2, JMS PRMESG BADSYN P1, NMOVE 7605 PAGE CCERB, JMS I (PRMESG BADSW CDER1, JMS I (PRMESG TOOMAN CDER5, JMS I (PRMESG BADNUM CCER1, TAD I (NAMPTR DCA NMX TAD (-4 JMS I (MOVE CDF 10 NMX, 0 CDF 10 NAME1 CDER3, TAD (4300 JMS I (PRWD /# JMS I (PRNAME JMS I (PRMESG NF CCER2, TAD I (DVNM1 DCA DEV1 TAD I (DVNM2 DCA DEV2 CDER0, TAD DEV1 SNA CLA JMP I (CDER2 /B DOES NOT EXIST TAD (4300 /# JMS I (PRWD TAD DEV1 JMS I (PRWD TAD DEV2 JMS I (PRWD JMS I (PRMESG DNE KILRT, 0 JMS I (PRINT KILMES JMP I KILRT RENRT, 0 JMS I (PRINT RENMES JMP I RENRT MOVRT, 0 JMS I (PRINT MOVMES JMP I MOVRT SWTCHS, 1423; P1 /LS 1602; P2 /NB 1520; P3 /MP 1400; P4 /L 2400; P5 /T 2300; P6 /S 2000; P7 /P 0400; P8 /D 1600; P9 /N 0000; P10 /UNKNOWN ZBLOCK 2 /PATCH ROOM FOR USER P2, DONB 0 P3, NMOVE 7612 P7, SETDEV PTPDEV P9, SETDEV NULDEV P10, UNKN 0 SCAN, 0 TAD (BEGLN DCA T CDF 0 JMS BLSCAN /IGNORE INITIAL SPACES JMP CHK NOBLUP, CLA ISZ T TAD I T CHK, SNA JMP ENDOFB JMS I (DECODE SKP CLA JMP NOBLUP JMS BLSCAN ENDOFB, DCA DELIM STA TAD T CDF 10 DCA I (LBEGIN JMP I SCAN BLSCAN, 0 TAD I T TAD (-240 SZA JMP BL2 ISZ T JMP BLSCAN+1 BL2, TAD (240 JMP I BLSCAN /LEAVE CHAR IN AC PAGE ALTMODE=233 SETPA, 0 JMS I (SETX "P;"A /KEEP HERE TO MAKE EASY TO PATCH JMP I SETPA MAKSUB, 0 TAD DELIM SNA CLA JMP CMDERR /DON'T ALLOW MAKE JMS SETLXR JMS I (GETSPC JMS I (LOVE JMS TECPUT "E;"W;0 JMS TECMOV JMS SETPA JMS TECPUT ALTMODE;0 JMS I (CHKSUP JMS I (REMEM 0 JMP I MAKSUB SETLXR, 0 TAD I (LBEGIN DCA LXR TAD (MOFILE-1 DCA I (TYR TAD (-5 /ZERO OPTION TABLE TOO JMS I (ZEROCD TAD LXR DCA SAVLXR JMP I SETLXR /PUT FOLLOWING CHARS INTO TECO BUFFER VIA TXR TECPUT, 0 / TAD NAME1 / SNA CLA / JMP I (CDER2 TAD I TECPUT ISZ TECPUT SNA JMP I TECPUT JMS I (TPUT JMP TECPUT+1 /MOVE CHARS FROM FIELD 0 LINE BUFFER /FROM SAVLXR+1 TO LXR-1 INCLUSIVE /INTO TECO LINE BUFFER AT 17600 TECMOV, 0 TAD SAVLXR DCA XR2 TAD SAVLXR CMA TAD LXR SNA CLA JMP I (CDER2 /NO FILE SPEC TECL, CDF 0 TAD I XR2 CDF 10 JMS I (TPUT TAD XR2 CMA TAD LXR SNA CLA JMP I TECMOV JMP TECL TECSUB, 0 JMS SETLXR JMS I (GETSPC TAD DELIM SNA JMP TECNORM TAD (-"< /ALLOW "_" AS WELL AS "<" SNA JMP EXTEN TAD ("<-"_ SZA CLA JMP I (CDER2 EXTEN, CDF 0 DCA I LXR /CHANGE < TO 0 CDF 10 JMS TECPUT "E;"W;0 JMS TECMOV JMS SETPA TAD LXR DCA SAVLXR JMS I (CHKSUP JMS I (GETSPC JMS TECPUT ALTMODE;"E;"R;0 JMS TECMOV JMS SETPA JMS TECPUT ALTMODE;"Y;0 JMP TECLV TECNORM,JMS TECPUT "E;"B;0 JMS TECMOV JMS SETPA JMS TECPUT ALTMODE;"Y;0 TECLV, JMS I (REMEM 0 JMP I TECSUB SAVLXR, 0 CMDERR, JMS I (PRMESG /NOT A LEGAL KEYWORD ERRCMD PAGE TPUT, 0 AND (177 /TECO LIKES 7-BIT ISZ TYR DCA I TYR TAD TYR TAD (-7646 /CHECK FOR OVERFLOW OF CD AREA SZA CLA JMP I TPUT CDER9, JMS I (PRMESG TOOLNG MNGSUB, 0 JMS I (SETLXR JMS I (GETSPC JMS I (TECPUT "E;"R;0 JMS I (TECMOV JMS SETX "T;"E EXTOK, JMS I (TECPUT ALTMODE;"Y;"H;"X;"Y;"H;"K;"I;0 TAD DELIM SNA JMP IFIN TAD (-", SZA CLA JMP I (CDER2 G, STL CLA RAR /PREVENT 'GCH' FROM HANDLING SPACE AND / JMS I (GCH AND (177 /GET RID OF HIGH ORDER BIT SNA JMP IFIN JMS TPUT JMP G IFIN, JMS I (TECPUT ALTMODE;"M;"Y;0 /MACRO GETS CALLED WITH POINTER PAST CHARS JMP I MNGSUB TYR, 0 /SET DEFAULT EXTENSION SETX, 0 TAD I SETX DCA C1 ISZ SETX TAD I SETX DCA C2 /FALL THRU 2ND EXT TAD NAME4 SNA CLA TAD NAME1 SNA CLA JMP I SETX TAD I TYR /GET LAST CHAR (NO EXT) TAD (-56 /WAS IT A DOT? SNA CLA JMP I SETX /YES JMS I (TECPUT /NO, USE DEFAULT EXTENSION ". C1, 0 C2, 0 0 TAD C1 AND (77 JMS I (ROTL DCA C1 TAD C2 AND (77 TAD C1 DCA NAME4 JMP I SETX CCERA, JMS I (PRMESG CONTRA CRSUB, 0 TAD I (7617 SNA CLA /BETTER BE NO INPUT TAD I (7600 /ANYTHING THERE? SNA CLA JMP I (CDER2 /NO OUTPUT OR YES INPUT JMS EDSUB /REMOVE BACK-ARROW AND REMEMBER CREATE LINE JMP I CRSUB EDSUB, 0 CDF 0 DCA I ARLOC /REPLACE ARROW BY NULL CDF 10 JMS I (REMEM /REMEMBER NEW COMMAND LINE 1 JMP I EDSUB ARLOC, . /LOCATION OF BACK-ARROW IN COMMAND LINE /'.' IS HARMLESS PTR IN CASE NO ARROW CCER3, CDF 10 JMS I (PRMESG BADMON CDER4, CLA JMS I (PRMESG BADSW CDER44, CLA JMS I (PRMESG BADSW2 CDER7, JMS I (PRMESG BADX CDER6, JMS I (PRMESG BADSTR PAGE INSARR, 0 TAD (BEGLN DCA XR CDF 0 TAD I XR SZA CLA JMP .-2 STA TAD XR DCA XR TAD ("< DCA I XR DCA I XR CDF 10 STA TAD XR DCA I (ARLOC /REMEMBER WHERE WE INSERTED A "_" JMP I INSARR BKA, 0 TAD I (LBEGIN DCA CLXR GG, CDF 0 ISZ CLXR TAD I CLXR CDF 10 SNA JMP NOBKAR TAD (-"< SNA JMP I BKA TAD ("<-"_ SZA CLA JMP GG TAD ("< CDF 0 DCA I CLXR CDF 10 JMP I BKA NOBKAR, ISZ BKA JMP I BKA AT, 0 CIF CDF 0 JMS I (SEMI ATMORE, TAD (BEGLN-1 DCA LXR ATLOOP, JMS I (GLXR SNA JMP I AT TAD (-300 SZA CLA JMP ATLOOP TAD LXR DCA I (SAVL JMS I (FUDG JMS I (GETSPC JMS I (ASSIGN DCA I (SETEXT TAD (EXTCM DCA DEFALT JMS I (LOOKUP SZA CLA /V3C TAD I (ASADR SNA JMP I (ATERR /IF NO FILESPEC AFTER @, ERROR DCA T TAD I (LNAME /GET BLOCK NUMBER DCA BLN CIF 0 JMS I T 200 /READ 2 PAGES NWB, BFR+200 /INTO BUFFER COUNT, BLN, 0 /FROM THIS BLOCK JMP I (ATERR / I/O ERROR TAD (-200 DCA COUNT TAD (BFR-1 DCA XR TAD NWB DCA T CDF 0 ALP, TAD I T JMS I (P CLL RTR RTR DCA BKA ISZ T TAD I T JMS I (P CLL RTL RTL RAL TAD BKA JMS I (P CLA ISZ T ISZ COUNT JMP ALP JMP I (ATOVER /ATFIN, TAD LXR / TAD (-BEGLN / SZA CLA / JMP I AT /LEAVE / JMP I (LEAVE /LEAVE BECAUSE LINE NOW EMPTY PAGE P, 0 AND (177 SNA JMP CTZ /END AT 0 OR ^Z TAD (-32 SNA JMP CTZ TAD (32-16 /IGNORE CR,LF,FF,VT CLL TAD (16-12 SZL JMP POGO TAD (212 /FORCE 8-BIT DCA I XR POGO, CLA TAD I T AND (7400 JMP I P CTZ, CDF 10 TAD LXR DCA ATEND STA TAD LXR DCA LXR /INCASE @ GOES TO EOL JMS I (GLXR /SEARCH FOR EOL SZA CLA JMP .-2 TAD LXR CMA TAD ATEND DCA ENDLEN TAD XR CMA TAD (BFR /GET LENGTH OF INSERTED STUFF DCA NEWLEN CDF 0 TAD I ATEND /GET NEXT CHAR AFTER FILESPEC CDF 10 /V3C TAD (-"' SZA CLA /IS IT AN APOSTROPHE? JMP .+3 /NO ISZ ENDLEN /YES ISZ ATEND /MAKE IT GO AWAY TAD ENDLEN JMS I (MOVE /MOVE REST OF LINE UP CDF 0 ATEND, 0 /FIRST CHAR POSITION AFTER @ SPEC CDF 0 BEGLN+1000 TAD NEWLEN /IF 0, 'MOVE' WILL IGNORE IT JMS I (MOVE /MOVE IN NEW STUFF CDF 0 BFR CDF 0 SAVL, 0 /POINTS TO @ TAD NEWLEN CIA TAD SAVL DCA NEWEND CLL TAD NEWEND TAD (-BEGLN-1000 SZL CLA JMP ATOVER TAD ENDLEN JMS I (MOVE /MOVE BACK END CDF 0 BEGLN+1000 CDF 0 NEWEND, 0 /FIRST POSITION AFTER NEW STUFF JMP I (ATMORE /LOOK FOR MORE ATOVER, JMS I (PRMESG OVFLOW GETMP, ENDLEN, 0 /- NO. OF CHARS AT END INCLUDING 0 NUMC, 0 TAD (SKP DCA I (NUMSKP TAD (-11 DCA I (NUMKNT JMS I (NUMBER DCA NAME2 TAD I (HIORD DCA NAME1 STA TAD LXR DCA LXR TAD (-11 DCA I (NUMKNT JMS I (NUMBER DCA NAME4 TAD I (HIORD DCA NAME3 TAD (SPA DCA I (NUMSKP JMP I NUMC NEWLEN, /- NO. OF CHARS BEING INSERTED GETYR, 0 AND (7 DCA GETMP CDF 0 TAD I (7777 CDF 10 CLL RTR RTR AND (30 TAD GETMP JMP I GETYR PAGE / TAD (-# OF LOCS TO MOVE / JMS MOVE / FROM CDF / FROM LOC / TO CDF / TO LOC MOVE, 0 DCA T TAD I MOVE /GET FROM CDF DCA FRCDF ISZ MOVE STA TAD I MOVE /GET FROM LOC-1 DCA XR ISZ MOVE TAD I MOVE /GET TO CDF DCA TOCDF ISZ MOVE STA TAD I MOVE /GET TO LOC-1 DCA XR2 ISZ MOVE /POINT TO RETURN TAD T SNA CLA JMP I MOVE /V1A IGNORE 0 MOVE FRCDF, HLT TAD I XR TMP1, TOCDF, HLT DCA I XR2 ISZ T JMP FRCDF CDF 10 JMP I MOVE DETCOR, 0 CIF 0 JMP I (CORE JMP I DETCOR BADCOR, JMS I (PRINT NOCORE GOEQ, CIF CDF 0 JMP I (COREQ ABSCOR, JMS I (PRINT CORMES JMP I DETCOR WRSCOR, JMS I (PRINT BATCOR JMP GOEQ SCRM, JMS I (PRINT SCRMES JMP I DETCOR SQSUB, 0 TAD I K7600 SZA CLA JMP I SQSUB TAD I (7617 DCA I K7600 JMS I (BATCH /IS BATCH RUNNING? JMP I SQSUB /NO K7600, 7600 /YES (CLEAR AC) TAD I K7600 TAD (7647-1 /POINT INTO DEVICE HANDLER RESIDENCY TABLE DCA TMP1 TAD I TMP1 /GET HANDLER STARTING ADDRESS TAD (-7607 SZA CLA /IS SQUISHED DEVICE SYS:? JMP I SQSUB /NO JMS I (PRINT SQWARN /YES, WARN USER JMP I SQSUB SETOUT, 0 TAD I (FLAG RTR SZL CLA TAD (5 TAD K7600 DCA OLOC TAD I OLOC SZA CLA JMP I SETOUT /HE'S SPECIFIED SOMETHING JMS I (200 12 /INQUIRE DVNM1, 0 DVNM2, 0 0 JMP I (CCER2 /NO SUCH DEVICE TAD DVNM2 DCA I OLOC TAD OLOC AND (5 SNA CLA /USING 2ND OUT DEV? JMP I SETOUT /NO ISZ OLOC /YES TAD (-4 JMS MOVE CDF 10 NAME1 CDF 10 OLOC, 7600 /INITIALLY 7600 OR 7605 JMP I SETOUT ENGOA, TAD (-5 JMS I (ZEROCD CDF 0 TAD I (BLKNO CDF 10 DCA I (7620 CLA IAC DCA I (7617 /'CCBTCH' IS ON SYS: TAD (20 / /T OPTION DCA I (7644 TAD (20 / ALSO /H (HUSH) OPTION DCA I (7643 TAD (YBATCH JMP I (ZOW /CHAIN TO BATCH PAGE DATE, 0 TAD I (DATWD SNA JMP NODATE DCA DATEM TAD DATEM CLL RTL RTL RAL AND (17 DCA TM1 TAD TM1 TAD (MONLST-1 DCA TM2 CDF 0 TAD I TM2 CDF 10 DCA MONP TAD DATEM JMS I (GETYR /V3D DATE/78 ALGORITHM DCA TM2 TAD TM2 TAD (106 /70. CIF CDF 0 JMS I (OTODY DCA YEAR TAD DATEM CLL RTR RAR AND (37 DCA DATEM TAD DATEM CIF CDF 0 JMS I (OTODY DCA DAY CDF 0 STL CLA RTL /2 TAD TM2 CLL RTR SNL SMA JMP LEAP ISZ I (JAN ISZ I (FEB LEAP, AND (37 TAD TM2 TAD (3 TAD DATEM DCA DATEM TAD TM1 TAD (JAN-1 DCA TM1 TAD I TM1 CDF 10 TAD DATEM DIV7, CLL TAD (-7 SZL JMP DIV7 TAD (7 TAD (WEEKLST DCA TM2 CDF 0 TAD I TM2 CDF 10 DCA WKP STA /DON'T CRLF JMS I (PRINT WKP, 0 STA JMS I (PRINT DAYDAY STA JMS I (PRINT MONP, 0 STL CLA RAR JMS I (PRWD /SPACE TAD DAY JMS I (PRWD STA JMS I (PRINT COM19 TAD YEAR JMS I (PRWD JMS I (CRLF JMS I (LOOK /LOOKUP SYS:DATE.SV YDATE JMP I DATE /DO NOTHING IF IT'S NOT THERE JMP I (CHAIN /CHAIN TO IT, IF IT'S THERE NODATE, JMS I (PRMESG NONE DT, 0 TM2, 0 DATEM, 0 DAY, 0 YEAR, 0 SETDSK, 0 TAD DSKDEV SZA JMP I SETDSK JMS I (200 12 /INQUIRE 5723 /PACKED ENCODING FOR 'DSK:' DSKDEV, 0 /SET TO DEVICE NUMBER 0 TM1, HLT /NO 'DSK' ! TAD DSKDEV JMP I SETDSK PAGE /CCL REMEMBERS UP TO 8 COMMAND LINES (EACH UP TO 55 DECIMAL /SIXBIT CHARACTERS LONG) IN BLOCK 65 ON THE SYSTEM DEVICE. /THIS BLOCK WHEN READ INTO 04000-04377 HAS THE FOLLOWING FORMAT: /4000-4037 REM-LINE 0 /4040-4177 REM-LINE 1 /4100-4137 REM-LINE 2 /4140-4177 REM-LINE 3 /4200-4237 REM-LINE 4 /4240-4277 REM-LINE 5 /4300-4337 REM-LINE 6 /4340-4377 REM-LINE 7 /EACH REM-LINE HAS THE FOLLOWING FORMAT: /WORD 0: IN-USE FLAG, MUST BE '1234' TO INDICATE LINE WAS REMEMBERED HERE /WORD 1: DATE LINE WAS REMEMBERED /WORD 2: COMMAND DEPENDENT INFORMATION /WORD 3: RESERVED FOR FUTURE EXPANSION /WORDS 4-37 COMMAND LINE NOT INCLUDING KEYWORD OR FOLLOWING SPACES / PACKED IN 6-BIT AND TERMINATED BY A 6-BIT 0. /ROUTINES: / TAD (DEP / JMS REMEM / N /REMEMBERS CURRENT LINE IN REM-LINE N. AC IS LINE DEPENDENT INFORMATION. /IF LINE IS TOO BIG, THIS PRINTS A WARNING MESSAGE AND RETURNS AS IF OK. / JMS RECALL / N /RECALLS REM-LINE N INTO BUFFER /IF NOTHING THERE, PRINTS A BAD SYNTAX MESSAGE AND RETURNS TO OS/8. /UPON RETURN, LINE-DEPENDENT INFO IS IN AC. /IF DATES DON'T MATCH, IT'S NOT THERE UNLESS DATE = -1 /0 USED BY TECO, MAKE COMMANDS /1 USED BY EDIT, CREATE COMMANDS /2 USED BY COMPILE, EXECUTE COMMANDS & PAL. / DEPENDENT WORD IS PTR TO FIRST ENTRY IN MAIN TABLE /3 USED BY 'UA' COMMAND /4 USED BY UB /5 USED BY UC / JMS FOREVER /CAUSES NEXT CALL TO REMEM TO INSERT -1 AS DATE REMSPACE=4000 REMBLOCK=65 REMEM, 0 DCA DEP TAD I (REMD SMA CLA JMP I REMEM /DON'T REMEMBER IF JUST RECALLED JMS I (RDREM JMP I (MEMBIG TAD I REMEM ISZ REMEM CLL RTL RTL RAL /MULTIPLY BY 40 TAD (REMSPACE DCA LPTR TAD (1234 CDF 0 DCA I LPTR CDF 10 ISZ LPTR FORVR, TAD I (DATWD /REPLACED BY CMA IF WANT NO DATE JMS LPUT /STORE DATE TAD DEP JMS LPUT /STORE DEPENDENT INFO JMS LPUT /RESERVED JMS I (SCAN /GO PAST KEYWORD AND BLANKS TAD I (LBEGIN DCA XR RELUP, JMS I (GETF JMP LZER JMS I (ROTL DCA TML JMS I (GETF JMP RZER TAD TML JMS LPUT JMP RELUP RZER, TAD TML LZER, JMS LPUT JMS I (WRREM JMP I (MEMBIG REMGO, JMP I REMEM DEP, 0 LPTR, 0 /PTS TO REM-LINE TML, 0 /TEMP /PUT INTO REM-LINE LPUT, 0 DCA TML TAD LPTR AND (37 SNA CLA JMP I (MEMBIG TAD TML CDF 0 DCA I LPTR CDF 10 ISZ LPTR JMP I LPUT FOREVER,0 TAD LCMA DCA FORVR JMP I FOREVER /NON-ZERO MEANS SET DATE TO -1 RECALL, 0 JMS I (RDREM JMP I (REMERR TAD I RECALL ISZ RECALL JMS I (ROTL RAR TAD (REMSPACE DCA LPTR JMS LGET TAD (-1234 SZA CLA JMP I (REMER2 JMS LGET SNA JMP I (REMER2 LCMA, CMA SNA JMP FOREV IAC TAD I (DATWD /SAME DAY? SZA CLA JMP I (REMER2 FOREV, JMS LGET DCA DEP JMS LGET /IGNORE RESERVED WORD CLA TAD (BEGLN-1 DCA XR TAD (BEGLN-1 DCA I (LBEGIN RECLUP, JMS LGET DCA TML TAD TML JMS I (ROTL RAL JMS I (PUTF JMP RECLV TAD TML JMS I (PUTF JMP RECLV JMP RECLUP RECLV, TAD DEP JMP I RECALL LGET, 0 CDF 0 TAD I LPTR CDF 10 ISZ LPTR JMP I LGET PAGE PUTF, 0 AND (77 SNA JMP PUTZ ISZ PUTF TAD (240 AND (77 TAD (240 PUTZ, CDF 0 DCA I XR CDF 10 JMP I PUTF CHKSUP, 0 JMS FUDG JMS I (ASSIGN TAD NAME1 SNA CLA JMP I CHKSUP /CAN'T SUP IF NO FILENAME TAD I (DVICE JMS I (LOOK /LOOK UP FILE NAME1 JMP I CHKSUP /NOT FOUND (GOOD) JMS I (PRINT SUP JMP I CHKSUP REMERR, JMS I (PRMESG REMBAD REMER2, JMS I (PRMESG BADREM MEMBIG, CLA JMS I (PRINT MEMWARN JMP I (REMGO RDREM, 0 CIF 0 JMS I (7607 200 /READ 2 PAGES INTO FIELD 0 4000 /LOCATION 4000 REMBLOCK SKP CLA ISZ RDREM JMP I RDREM WRREM, 0 CIF 0 JMS I (7607 4200 /WRITE 2 PAGES FROM FIELD 0 4000 /LOCATION 4000 REMBLOCK SKP CLA ISZ WRREM JMP I WRREM FUDG, 0 DCA I (OUTSW /LOAD HANDLER TAD I (OUTLIM CIA DCA CLXR JMP I FUDG K8, 0 TAD (1716 JMS I (PRWD TAD (1431 JMS I (PRWD CIF CDF 0 JMP I K8 ROTL, 0 CLL RTL RTL RTL JMP I ROTL /GET FROM INPUT LINE VIA XR GETF, 0 CDF 0 TAD I XR CDF 10 SZA ISZ GETF AND (77 JMP I GETF /THIS GETS A DEV:NAME.EXT SPECIFICATION (USING LXR) /PUTTING RESULT IN DEV1,DEV2, NAME1-4. /IT GIVES A FATAL ERRORR MESSAGE IF BAD. GETSPC, 0 STA DCA DVFLAG DCA DEV1 FILLP1, DCA DEV2 FILLP, JMS I (GNAME TAD (-": /AC CONTAINED DELIM SNA CLA JMP DEVNAM DCA I (NUMC JMP I GETSPC DEVNAM, CLA IAC TAD I (PERDSW TAD I (NUMC SZA CLA JMP CDERA /. OR # IN DEVICE NAME TAD NAME1 DCA DEV1 ISZ DVFLAG JMP CDERA /CATCHES A:B: TAD NAME2 JMP FILLP1 DVFLAG, 0 CDERA, JMS I (PRMESG BADEV ATERR, CDF 10 CLA JMS I (PRMESG ATIO PAGE CDINIT, 0 TAD I DEFALT TAD (-5200 SZA CLA /IS THIS A REQUEST FOR A /"SPECIAL DECODE"? JMP CDCONT /NO TAD ALTLIM DCA OUTLIM /YES, SET UP THE PROPER LOCATIONS TAD ALTDF1 DCA LIMDIF /TO GET 1 OUTPUT AND 5 INPUT FILES TAD ALTDF2 DCA BEGDIF /ALL OF WHICH ARE /5-WORD ENTRIES DCA I PLKUPS TAD STARJM DCA I PSTARS /AND ALLOW * /AS A FILE OR EXTENSION NAME TAD CCLA /STOPS FETCHES IN SPECIAL MODE DCA I PSPKG1 /NO HANDLER FETCHES NECESSARY EITHER /SINCE NO LOOKUPS CDCONT, JMS I (BKA STA DCA I (OUTSW JMS I (ZEROCD TAD LBEGIN DCA LXR JMP I CDINIT /CONSTANTS NECESSARY TO SUPPORT "SPECIAL DECODE" MODE ALTLIM, 1-MOFILE-5 ALTDF1, MOFILE+5-MPARAM+5 ALTDF2, 5 PLKUPS, LKUPSW PSTARS, STARSW PSPKG1, SPKLG1 BEGDIF, MIFILE-MOFILE LIMDIF, MIFILE-MPARAM+2 OUTLIM, 1-MIFILE LBEGIN, 0 /PTS TO 1 CHAR BEFORE COMMAND KEYWORD ARGUMENT NMOVE, 0 DCA PT1 /V1A ARG IN AC TAD I (FLAG RTL SMA CLA /FEATURE ENABLED? JMP I (CCERB /NO TAD I (OUTSW SZA CLA JMP I (CCERB /ON OUTPUT SIDE TAD I CCLA /V3C SNA CLA /DON'T CHANGE OUT DEV IF SPECIFIED TAD I (FLAG /LOOK AT 'COPY EXT' BIT AND (200 SNA CLA JMP NMXXX /IT WASN'T SET TAD I (7617 /GET FIRST INPUT DEVICE AND (17 /ISOLATE DEVICE BITS DCA I CCLA /FORCE THIS TO BE FIRST OUTPUT DEVICE NMXXX, TAD I PT1 SNA JMS I (SETDSK /CHANGE TO 'IAC' TO ALWAYS USE SYS: DCA I PT1 /SET DEVICE TO SYS IF NONE ISZ PT1 TAD I PT1 /WAS THERE A SPECIFICATION THERE? SZA CLA JMP I NMOVE /YES, DO NOTHING TAD I (FLAG AND (200 /GET 'COPY EXTENSION' BIT L7740, SMA SZA CLA /'SMA' IS UNNECESSARY STA /COPY 4 WORDS IF BIT 4 WAS ON TAD (-3 /OTHERWISE ONLY COPY 3 WORDS JMS I (MOVE CDF 10 NAME1 CDF 10 TEM, PT1, 0 JMP I NMOVE P8, SETDEV DMPDEV VERTN, 0 JMS I (RDMON /READ MONITOR CDF 0 TAD I (2031 /GET PATCH LEVEL SNA TAD ("! AND (77 DCA TEM TAD I (2000 /GET VERSION # CDF 10 SPA CCLA, 7600 /"0" MEANS OLD TAD (60 JMS I (ROTL TAD TEM JMP I (PTCH /ALLOW DEASSIGN FOO ? DEASSIGN,0 TAD L7740 DCA XR TAD (-17 DCA T DCA I XR ISZ T JMP .-2 CDF 0 TAD I (7746 AND (6777 TAD (1000 DCA I (7746 CDF 10 JMP I DEASSIGN STARJM, RELOC STARNM /DUMP LITERALS AT LAST POSSIBLE MOMENT JMP STARNM RELOC PAGE ZBLOCK 7600-. /CCL.SV (THE IMPORTANT PART) MUST BE A SINGLE CORE-LOAD /CONTIGUOUS LOAD, BECAUSE OF THE WAY THE MONITOR LOADS IT. /FORTUNATELY, FIELD 0 STUFF OCCURS AFTER FIELD 1 STUFF IN THE /OS/8 CORE-IMAGE FORMAT. /FOR VERSION OF THE MONITOR BEFORE LEVEL A, /THE TOTAL LENGTH OF CCL.SV MUST BE LESS THAN14 BLOCKS /OR IT READS OVER 7600. /BUT NOW CCL COMES IN AND READS THE REMAINDER OF ITSELF /INTO FIELD 0. 400-777 IS IGNORED BY SKIPPING A BLOCK, /THEN THER REST OF CCL (7 PAGES) IS READ IN. FIELD 0 *400 /IT LOADS OVER THE SAVE, DATE OVERLAY /AND STARTS AT LOCATION 600 /KEYWORD TABLE IN 400- /CONSISTS OF COMMANDS 2 CHARS PER LOCATION /IN 5-BIT ASCII (ONLY LETTERS ARE LEGAL) /SEPARATED FROM EACH OTHER BY 6-BIT 00'S. /EACH ENTRY STARTS ON A WORD BOUNDARY, BUT IF YOU /NEED THE ROOM, THEY NEED NOT WITH A SIMPLE FIX /BIT 40 ON MEANS THAT THE CHARACTER ISN'T REQUIRED /BUT IF THE USER DOES TYPE A LETTER, IT MUST MATCH. VNO, CCLTAB KEYWRD, 0530 /EX ECUT 4543 6564 0002 /BA CKSP OR TER MIN 0143 5363 6000 0201 /BAS IC 2351 4300 0425 /DU PLICATE 6054 5143 4164 4500 0217 /BO OT 5764 0003 /CCL 0314 0003 /COMPA R 1715 2001 6200 0317 /COM PIL 1560 5154 0003 /COP Y 1720 7100 1505 /MEM ORY 1557 6271 0003 /CREA TE 2205 0164 4500 0322 /CREF 0506 0004 /DA TE 0164 4500 0405 /DEL ETE 1445 6445 0004 /DE A 0541 0004 /DIR ECT 1122 4543 6400 0504 /ED IT 5164 0005 /EO F 1746 0010 /HE LP 0554 6000 1411 /LIN K 1653 0015 /MAC R 0103 6200 1411 /LI ST 6364 0014 /LO AD 1741 4400 1501 /MAK E 1345 0015 /MAP 0120 0015 /MUNG 2516 0700 2001 /PAL 1400 2022 /PRI NT 1156 6400 2025 /PU NCH 5643 5000 2205 /REN AME 1641 5545 0022 /RES 0523 0022 /REW IND 0527 5156 4400 2305 /SET 2400 2313 /SK IP 5160 0023 /SQ UISH 2165 5163 5000 2325 /SU BMIT 4255 5164 0024 /TE CO 0543 5700 2431 /TY PE 6045 0025 /UN LOAD 1654 5741 4400 2501 /UA 0025 /UB 0200 2503 /UC 0026 /VE R 0562 0032 /ZERO 0522 1700 4000 /@ ZBLOCK 600-. IFDEF XYZMCR < THIS IS THE TECO MACRO WHICH WAS USED TO CREATE THE ABOVE TABLE: HKGYJ2SR0,.KHXAHKMA TYPE COMMANDS, SPACE SEPARATES MANDATORY PART FROM OPTIONAL PART, CR TERMINATES COMMANDS, ^Z TERMINATES ALL. ** NO EDITING ** HKHXYHXN0UO0UB0UN !CHLP!^TULQL-32"EOBLANK'QL-13"EOCR'QL-26"EOEND' !CHLP0!QL&63+QBUT QT/8UXQX+48IQT-(8*QX)+48I QL"NZJ.UZGNQLIQZJXNK%N' %O&1"NOCHLP' QN-3"LZUH'I OCHLP !BLANK! 32UBZJ.UZGNQLIQZJXNK%NOCHLP !CR!  QHJ /GNZJXN0UN0UB0ULOCHLP0 !END!I00  > *600 JSBITS=7746 SYSTEM=22 PRMES=330 ERRET=33 /THESE ARE LOCATIONS FROM OS/8 MONITOR /RUNS IN FIELD 0 ONLY. ENTRY, 0 /INITIALLY 0 MEANS 'EX' COMMAND LINPTR, JMP ENTREE /OS/8 JUMPS HERE (ACTUALLY TO 600) TEMM, TEKLDG, ISZ CCLNHR /TECO 'EG' JUMPS HERE DCA I (BEGLN /ZERO COMMAND LINE JMP TEGO /FIRST WE DISABLE CALLS TO MONITOR ENTREE, TAD (7605 DCA ERRET TAD SYSTEM DCA MYSYS JMS FINDIT SPA CLA /WAS IT A LEGAL COMMAND? JMP I (PRQMRK /NO TEGO, TAD (6003 /YES DCA I (JSBITS CIF 10 JMS I MYSYS /CALL USR AND LOCK IN CORE 10 CLA IAC CIF 10 JMS I (200 2 CCLBLC, CCLSV CCLEN, 0 CCLNHR, JMP NOCCL /ISZ'ED IF KBM NOT IN MEMORY CLA IAC TAD CCLBLC DCA CCLRDB JMS I (7607 CCLCCW, 2711 /READ 27 PAGES OF CCL.SV CCLSTR, 2000 MYSYS, CCLRDB, 7700 /INITIALLY POINTS TO USR JMP NOCCL CIF CDF 10 JMP I CCLSTR CCLSV, FILENAME CCL.SV NOCCL, CLA SKP JMP I (7605 /GO BACK TO MON IF CCL NOT FOUND ON TECO EG COMMAND JMS I (PRMES /PRINT ERROR MESSAGE OTHERWISE TEXT /NO CCL!/ 0 /FINDS IF INPUT LINE STARTS WITH A COMMAND /LEAVES ENTRY # IN AC, -1 IF NOT FOUND /ENTRIES START AT ENTRY 0. /CALLABLE FROM ANY FIELD FINDIT, 0 MORE, TAD (BEGLN-1 DCA LINPTR ISZ LINPTR TAD I LINPTR TAD (-240 SNA CLA JMP .-4 JMS GETKAR JMP ENDOFT /NO MATCH JMP INTO FNLUP, TAD I LINPTR TAD (-301 STL TAD (-32 SNL CLA JMP NOLET /NOT A LETTER JMS GETKAR JMP MATCH INTO, CIA TAD I LINPTR AND (37 /5-BIT ASCII ISZ LINPTR SNA CLA /DO THEY MATCH? JMP FNLUP /YES NOMT, JMS GETKAR SKP JMP .-2 /SCAN TO NEXT ENTRY ISZ ENTRY JMP MORE NOLET, JMS GETKAR JMP MATCH CLA ISZ SIGNIF JMP NOMT MATCH, TAD ENTRY SKP ENDOFT, STA RETCIF, CDF 0 /RETURN TO CALLING FIELD (MAY BE OVERLAID) JMP I FINDIT KPTR, KEYWRD HALF, -1 /0 MEANS LEFT HALF SIGNIF, 0 /1 MEANS 40 BIT ON WHICH MEANS CHAR IS SIGNIF ONLY IF PRESENT /GETKAR GETS NEXT 5-BIT CHAR, LEAVES IT IN AC /SETS SIGNIF TO -1 IF 40 BIT WAS PRESENT /TAKES RETURN 1 IF CHAR IS 0 /TAKES RETURN 2 OTHERWISE GETKAR, 0 ISZ HALF JMP RTHALF TAD I KPTR RTR RTR RTR JMP INSIDE RTHALF, STA DCA HALF TAD I KPTR ISZ KPTR INSIDE, AND (77 DCA TEMM TAD TEMM AND X40 X40, SZA CLA STA DCA SIGNIF TAD TEMM SZA ISZ GETKAR AND (37 JMP I GETKAR PAGE *REST CORLOC, CORX CORV, 1400 CORSIZ, 1 CORE, CDF 0 TAD CORSIZ CLL RTL RAL AND COR70 TAD COREX DCA .+1 COR1, CDF TAD I CORLOC COR2, NOP DCA COR1 TAD COR2 DCA I CORLOC COR70, 70 TAD I CORLOC CORX, 7400 TAD CORX TAD CORV SZA CLA JMP COREX TAD COR1 DCA I CORLOC ISZ CORSIZ JMP CORE COREX, CDF 0 TAD CORSIZ CLL RTL TAD (-10 JMP I (DETC2 /GO TO NEXT PAGE MONLST, MON1 MON2 MON3 MON4 MON5 MON6 MON7 MON8 MON9 MON10 MON11 MON12 MON1, TEXT /JANUARY/ MON2, TEXT /FEBRUARY/ MON3, TEXT /MARCH/ MON4, TEXT /APRIL/ MON5, TEXT /MAY/ MON6, TEXT /JUNE/ MON7, TEXT /JULY/ MON8, TEXT /AUGUST/ MON9, TEXT /SEPTEMBER/ MON10, TEXT /OCTOBER/ MON11, TEXT /NOVEMBER/ MON12, TEXT /DECEMBER/ COM19, TEXT /, 19/ WEEKLST,DAY1 DAY2 DAY3 DAY4 DAY5 DAY6 DAY7 DAY1, TEXT /SATUR/ DAY2, TEXT /SUN/ DAY3, TEXT /MON/ DAY4, TEXT /TUES/ DAY5, TEXT /WEDNES/ DAY6, TEXT /THURS/ DAY7, TEXT /FRI/ BADMON, TEXT /#BAD MONITOR/ PAGE HISIZ, 0 /HIGHEST MEMORY BANK NEWCOR, 0 /PROPOSED NEW MEMORY BANK DETC2, SNA JMS KEIGHT TAD (-30 SNA JMS K32 TAD (40 JMS OTOD DCA I (CORMES CDF 10 TAD I (LBEGIN DCA XRL CDF 0 STA TAD I (CORSIZ DCA HISIZ ISZ XRL TAD I XRL /GET NEXT CHAR SNA JMP COREQ /NOT SETTING CORE SIZE TAD (-260 DCA NEWCOR TAD NEWCOR AND (7770 SZA CLA JMP DETER /TRIED TO SET CORE SIZE GT 7 TAD NEWCOR CIA TAD HISIZ SPA CLA JMP BADKOR /TRIED TO SET SOFTWARE CORE SIZE GT REAL CORE SIZE TAD I (7777 RTL /BATCH BIT TO LINK SZL CLA JMP WRSKOR /CAN'T CHANGE CORE SIZE UNDER BATCH TAD NEWCOR CLL RTL RAL DCA NEWCOR TAD I (7777 AND (7707 TAD NEWCOR DCA I (7777 COREQ, TAD I (7777 AND (70 SNA JMP ABSKOR TAD (10 CLL RAR JMS OTOD DCA I (SCRMES TAD I (SCRMES CIA TAD I (CORMES ABSKOR, CIF CDF 10 SNA CLA JMP I (ABSCOR /DON'T PRINT SOFT IF = REAL JMP I (SCRM BADKOR, CIF CDF 10 JMP I (BADCOR WRSKOR, CIF CDF 10 JMP I (WRSCOR DETER, CIF CDF 10 JMP I (CMDERR KEIGHT, 0 CIF CDF 10 JMS I (K8 JMP I KEIGHT XRL, 0 OTOD, 0 DCA TTX DCA TX TAD TTX TAD (-12 ISZ TX SMA JMP .-3 TAD (72 DCA CORETM STA TAD TX SNA TAD (40-60 TAD (60 CLL RTL RTL RTL TAD CORETM JMP I OTOD TX, 0 TTX, 0 CORETM, K32, 0 TAD (4100 DCA I (CORMES+5 JMP I K32 OTODY, 0 JMS OTOD CIF CDF 10 JMP I OTODY PAGE ERRCMD, TEXT /#ERROR IN COMMAND/ BADVMS, TEXT /#CCL 3X OVERLAY AND MONITOR INCOMPATIBLE/ AAAA=. *BADVMS+3 CCLTAB&77^100+40 *AAAA LOVMES, TEXT /NOT WAR?/ KILMES, TEXT /FILES DELETED:/ RENMES, TEXT /FILES RENAMED:/ MOVMES, TEXT /FILES COPIED:/ SCRMES, TEXT \00K/\ *.-1 CORMES, TEXT /00K MEMORY/ DAYDAY, TEXT /DAY / NOCORE, TEXT /# NOT ENOUGH MEMORY/ BATCOR, TEXT /#CANNOT CHANGE MEMORY LIMIT WHILE RUNNING BATCH/ JAN, 0 FEB, 3 4;0;2;5;0;3;6;1;4;6 SUP, TEXT /%SUPERSEDING/ MEMWARN,TEXT /%CAN'T REMEMBER/ SQWARN, TEXT /%BATCH SQUISHING SYS:!/ SYSER, TEXT \#I/O ERROR ON SYS:\ BADSYN, TEXT /#ILLEGAL SYNTAX/ TOOMAN, TEXT /#TOO MANY FILES/ NF, TEXT / NOT FOUND/ DNE, TEXT / DOES NOT EXIST/ SEMSG1, TEXT /? ENTER ERROR/ SEMSG2, TEXT \?I/O ERROR\ SEMSG3, TEXT /?DEVICE FULL/ SEMSG4, TEXT /?CLOSE ERROR/ ATIO, TEXT /#BAD FILENAME OR ERROR READING INDIRECT FILE/ OVFLOW, TEXT /#COMMAND LINE OVERFLOW/ BADNUM, TEXT /#BAD NUMBER/ BADSTR, TEXT /#ILLEGAL * OR ?/ BADX, TEXT /#BAD EXTENSION/ BADOPT, TEXT /#BAD SWITCH OPTION/ TOOLNG, TEXT /#COMMAND TOO LONG/ REMBAD, TEXT \#I/O ERROR TRYING TO RECALL\ BADSW, TEXT /#SWITCH NOT ALLOWED HERE/ BADSW2, TEXT /#BAD CCL SWITCH/ NONE, TEXT /NONE/ BADREM, TEXT /#BAD RECOLLECTION/ BADEV, TEXT /#BAD DEVICE/ CONTRA, TEXT /#CONTRADICTORY SWITCHES/ VMES, TEXT \OS/8 - KBM V3A - CCL V1A\ LOC78=VMES+1 VLOC=VMES+6 *.-2 CV=CCLVER&77 CCLNUM&77^100+CV *.+1 YEDIT, FILENAME EDIT.SV *.-1 YBOOT, FILENAME BOOT.SV *.-1 YFORT, FILENAME FORT.SV *.-1 YF4, FILENAME F4.SV *.-1 YBITMAP,FILENAME BITMAP.SV *.-1 YSRCCOM,FILENAME SRCCOM.SV *.-1 YBCOMP, FILENAME BCOMP.SV *.-1 YPAL8, FILENAME PAL8.SV *.-1 YFOTP, FILENAME FOTP.SV *.-1 /YCREF, FILENAME CREF.SV / *.-1 YDIRECT,FILENAME DIRECT.SV *.-1 YPIP, FILENAME PIP.SV *.-1 YABSLDR,FILENAME ABSLDR.SV *.-1 YLOADER,FILENAME LOADER.SV *.-1 YLOAD, FILENAME LOAD.SV *.-1 YTECO, FILENAME TECO.SV *.-1 YLPTSPL,FILENAME LPTSPL.SV *.-1 YCAMP, FILENAME CAMP.SV *.-1 YSET, FILENAME SET.SV *.-1 YBASIC, FILENAME BASIC.SV *.-1 YRXCOP, FILENAME RXCOPY.SV *.-1 YRESORC,FILENAME RESORC.SV *.-1 YBATCH, FILENAME BATCH.SV *.-1 YRALF, FILENAME RALF.SV *.-1 YSABR, FILENAME SABR.SV *.-1 YFRTS, FILENAME FRTS.SV *.-1 YDATE, FILENAME DATE.SV *.-1 YCCL, FILENAME CCL.SV *.-1 YHELP, FILENAME HELP.SV *.-1 YMACREL,FILENAME MACREL.SV *.-1 YLINK, FILENAME LINK.SV *.-1 BATHED, "$;"J;"O;"B;215;212;".;0 BATAIL, ".;"R;240;"F;"O;"T;"P;215;212 "*;"S;"Y;"S;":;"C;"C;"B;"T;"C;"H;".;"T;"M;"/;"D;"$;215;212 "$;"E;"N;"D;215;212;32;0 TEMNAM, FILENAME CCBTCH.TM LPTDEV, DEVICE LPT TVDEV, DEVICE TV TTYDEV, DEVICE TTY PTPDEV, DEVICE PTP DMPDEV, DEVICE DUMP NULDEV, DEVICE NULL BATBUF=4400 /LOCATION OF ONE BLOCK BATCH TEMP BUFFER USR=200 GLINE=1200 /LOCATION FROM KBM CTRLCK=1241 /LOC FROM KBM, PTS TO PLACE TO BRANCH ON ^C BATPTR, BATBUF-1 LCHAR, 0 SEMGO, CIF CDF 10 JMP I SEMI SEMI, 0 TAD (BEGLN-1 DCA XR SEMLUP, TAD I XR SNA JMP SEMGO /NO SEMICOLONS TAD (-"; SZA CLA JMP SEMLUP CIF 10 CLA IAC /SYS JMS I (USR 3 /ENTER BLKNO, TEMNAM BLKLEN, 0 /NEG OF LENGTH JMP SEMER1 /ENTER ERROR TAD BLKNO DCA BATBLK TAD (BEGLN-1 DCA XR TAD (7600 DCA I (CTRLCK /FORCE ^C TO GLINE TO GO TO 7600 JMS BATLST BATHED S2, TAD I XR SNA JMP LINEND DCA LCHAR /SAVE CHAR TAD LCHAR TAD (-"; SNA CLA JMP GOTSEM TAD LCHAR S3, JMS BATPUT JMP S2 LINEND, TAD LCHAR TAD (-"; /LOOK AT LAST CHAR SZA CLA /WAS IT SEMICOLON? JMP BATEND /NO, END OF TEMP BATCH STREAM JMS I (GLINE /YES, READ NEW LINE FROM KEYBOARD /**** WHAT IF WE'RE RUNNING UNDER BATCH **** TAD (BEGLN-1 DCA XR JMP S2 GOTSEM, JMS KRLF TAD (". JMP S3 KRLF, 0 TAD (215 JMS BATPUT TAD (212 JMS BATPUT JMP I KRLF BATPUT, 0 ISZ BATPTR DCA I BATPTR TAD BATPTR TAD (-BATBUF-377 SNA CLA JMS BATWRIT /WRITE OUT BUFFER IF FULL JMP I BATPUT BATWRIT,0 JMS I (7607 4200 /WRITE 1 BLOCK BATBUF BATBLK, 0 JMP SEMER2 / I/O ERROR ISZ BATBLK /POINT TO NEXT BLOCK ISZ BATLEN /BUMP LENGTH ISZ BLKLEN SKP JMP SEMER3 /DEVICE FULL TAD (BATBUF-1 DCA BATPTR JMP I BATWRIT BATEND, JMS KRLF JMS BATLST BATAIL JMS BATWRIT CIF 10 CLA IAC /SYS JMS I (USR 4 /CLOSE TEMNAM BATLEN, 0 /LENGTH OF TEMPORARY FILE JMP SEMER4 /CLOSE ERROR CIF CDF 10 JMP I (ENGOA BATLST, 0 TAD I BATLST DCA BTPT ISZ BATLST BTLP, TAD I BTPT SNA JMP I BATLST JMS BATPUT ISZ BTPT JMP BTLP BTPT, 0 SEMER4, IAC /CLOSE ERROR SEMER3, IAC /DEVICE FULL SEMER2, IAC / I/O ERROR SEMER1, IAC /ENTER ERROR CIF CDF 10 JMP I (SEMERR PAGE FIELD 1 *2001 $