File: CCLSUB.MA of Tape: OS8/OS8-Latest/new-9
(Source file text)
/CCL SUBROUTINES 1 FOR KBM V40 / / / / / / / CCL SIMPLE COMMAND SUBROUTINES / VERSION=4B .ENTRY CCSUB .EXTERNAL REMD,REGO,FLAG,FOREVER,EXSUB .EXTERNAL LISPRT,ERROR,VMES,MMES,MSGLST .EXTERNAL RDMON,BATCH,ARLOC,MOVE .EXTERNAL ASSIGN,FUDG,DVICE,LOOK .EXTERNAL GETSPC,ZEROCD,LBEGIN .GLOBAL USRSUB,BASUB,DEASSIGN .GLOBAL CRSUB,EDSUB,FOSUB,ZERSUB .GLOBAL TECSUB,MAKSUB,MNGSUB,TTSUB .GLOBAL SQSUB,KILRT,RENRT,MOVRT .NOLIST .INCLUDE OUT:CCLDEF .LIST .SBTTL UA,UB,UC COMMANDS .RSECT CCLSUB FIELD 1 CCSUB, 0 /USED TO FORCE THIS OVERLAY IN JMP I CCSUB /TEST END OF TABLE USRSUB, 0 TAD I (REMD SMA CLA JMP I (REGO /REMEMBERED A NEW LINE JMS I (FOREVER /NO DATE TAD I (FLAG /WANT TO AND (70 CLL RTR RAR TAD (-1 /IN THIS REM-LINE JMS I (EXSUB JMP I USRSUB .SBTTL SQUISH COMMAND SQSUB, 0 TAD I (MOFILE+1 TAD I (MIFILE+1 SZA CLA SQER$: JMS I (ERROR /DON'T ALLOW FILES 24. /#Error in command TAD I (MOFILE SZA CLA JMP I SQSUB TAD I (MIFILE SNA JMP SQER$ /NO DEV: NO GOOD DCA I (MOFILE JMS I (BATCH /IS BATCH RUNNING? JMP I SQSUB /NO CLA TAD I (MOFILE TAD (DVHNDL-1 /POINT INTO DEVICE HANDLER RESIDENCY TABLE DCA T$ TAD I T$ /GET HANDLER STARTING ADDRESS TAD (-SHNDLR SZA CLA /IS SQUISHED DEVICE SYS:? JMP I SQSUB /NO TAD I (MPARAM AND (20 /HUSH ? SZA CLA JMP I SQSUB /YES, NO MESSAGE CLA STL IAC RAL /3 JMS I (LISPRT /%Batch squishing SYS:! MSGLST /YES, WARN USER JMP I SQSUB T$: 0 .SBTTL DEASSIGN COMMAND /ALLOW DEASSIGN FOO ? DEASSIGN,0 TAD (7740 DCA XR TAD (-17 DCA D$ DCA I XR ISZ D$ JMP .-2 CDF 0 TAD I (JSBITS AND (6777 TAD (1000 DCA I (JSBITS CDF 10 JMP I DEASSIGN D$: 0 CHKSUP, 0 JMS I (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) CLA STL RTL /MSG #2 %Superseding JMS I (LISPRT MSGLST JMP I CHKSUP .SBTTL ZERO COMMAND ZERSUB, 0 TAD I (MOFILE+1 SNA CLA /WAS FILENAME SPECIFIED ON ZERO CMD? TAD I (MOFILE /OR WAS NO OUT DEVICE SPECIFIED? SNA CLA JMS I (ERROR /YES... ERROR 9. /#Illegal syntax JMP I ZERSUB /NO, OKAY. TECEND, 0 /TRANSFER TECO COMMAND TO 17400 JMS I (TPUT /TERMINATE COMMAND TAD (-200 JMS I (MOVE CDF 0 BFR CDF 10 7400 TAD .-1 DCA I (MOFILE /SET CONTINUATION POINTER JMP I TECEND PAGE .SBTTL PUT MACRO .NOLIST ME .MACRO PUT TXT JMS TECPUT .IF IDN TXT[1],$< .ENABLE ASCII ;TEXT <ALTMODE>"TXT[2:0]" .ENABLE SIXBIT > .IF DIF TXT[1],$< .ENABLE ASCII ;TEXT /TXT/ .ENABLE SIXBIT > .ENDM .SBTTL MAKE COMMAND ALTMODE=233 MAKSUB, 0 TAD DELIM SNA CLA JMS I (ERROR /DON'T ALLOW MAKE <CR> 24. /#Error in command JMS SETLXR JMS I (GETSPC PUT "EW" JMS TECMOV PUT "$" JMS I (CHKSUP JMS I (LOVE CLA CLL IAC RAL /REMEMBER IN CHANNEL #2 JMS I (EXSUB JMS I (TECEND JMP I MAKSUB SETLXR, 0 TAD I (LBEGIN DCA LXR TAD (BFR-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 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 'BFR' TECMOV, 0 TAD SAVLXR DCA XR2 TAD SAVLXR CMA TAD LXR SNA CLA JMS I (ERROR /NO FILE SPEC 9. /#Illegal syntax L$: CDF 0 TAD I XR2 CDF 10 JMS I (TPUT TAD XR2 CMA TAD LXR SNA CLA JMP I TECMOV JMP L$ .SBTTL TECO COMMAND TECSUB, 0 JMS SETLXR JMS I (GETSPC TAD DELIM SNA JMP TECNORM TAD (-"< /ALLOW "_" AS WELL AS "<" SZA TAD ("<-"= SZA TAD ("=-"_ SZA CLA JMS I (ERROR 9. /#Illegal syntax 1$: CDF 0 DCA I LXR /CHANGE < TO 0 CDF 10 PUT "EW" JMS TECMOV TAD LXR DCA SAVLXR JMS I (CHKSUP JMS I (GETSPC PUT "$ER" JMP TECLV TECNORM,PUT "EB" TECLV, JMS TECMOV PUT "$Y" CLA CLL IAC RAL /CHANNEL #2 JMS I (EXSUB JMS I (TECEND JMP I TECSUB SAVLXR, 0 PAGE .SBTTL MUNG COMMAND TPUT, 0 AND (177 /TECO LIKES 7-BIT ISZ TYR CDF 0 DCA I TYR CDF 10 TAD TYR TAD (-<BFR+200-1> /CHECK FOR OVERFLOW OF 'BFR' AREA SZA CLA JMP I TPUT JMS I (ERROR 25. /#Command is too long TYR, 0 MNGSUB, 0 JMS I (SETLXR JMS I (GETSPC PUT "ER" JMS I (TECMOV JMS SETX "T;"E PUT "$YHXYHKI" TAD DELIM SNA JMP F$ TAD (-", SZA CLA JMS I (ERROR 9. /#Illegal syntax L$: CDF 0 ISZ LXR TAD I LXR CDF 10 AND (177 /GET RID OF HIGH ORDER BIT SNA JMP F$ JMS TPUT JMP L$ F$: PUT "$MY" /MACRO GETS CALLED WITH POINTER PAST CHARS JMS I (TECEND JMP I MNGSUB /SET DEFAULT EXTENSION SETX, 0 TAD I SETX DCA 1$ ISZ SETX TAD I SETX DCA 2$ /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 ". 1$: 0 2$: 0 0 TAD 1$ AND (77 BSW DCA 1$ TAD 2$ AND (77 TAD 1$ DCA NAME4 JMP I SETX .SBTTL BASIC COMMAND BASUB, 0 TAD (200 /SET /Q SWITCH DCA I (MPARAM+1 JMP I BASUB LOVE, 0 TAD NAME1 TAD (-'LO SZA CLA JMP I LOVE TAD NAME2 TAD (-'VE SZA CLA JMP I LOVE TAD NAME3 SZA CLA JMP I LOVE CLA IAC /not WAR? JMS I (LISPRT MSGLST JMP I LOVE PAGE .SBTTL CREATE COMMAND CRSUB, 0 TAD I (MIFILE SNA CLA /BETTER BE NO INPUT TAD I (MOFILE /ANYTHING THERE? SNA CLA JMS I (ERROR /NO OUTPUT OR YES INPUT 9. /#Illegal syntax JMS EDSUB /REMOVE BACK-ARROW AND REMEMBER CREATE LINE JMP I CRSUB .SBTTL EDIT COMMAND EDSUB, 0 TAD I (ARLOC DCA AR$ TAD AR$ CDF 0 SZA CLA /WE COULD KILL SOMETHING IN F0 DCA I AR$ /REPLACE ARROW BY NULL CDF 10 CLA IAC CLL RAL /REMEMBER NEW COMMAND LINE JMS I (EXSUB /REMEMBER IN CHANNEL #2 JMP I EDSUB AR$: 0 /LOCATION OF BACK-ARROW IN COMMAND LINE /0 IS NOW HARMLESS IN CASE NO ARROW .SBTTL FOCAL COMMAND FOSUB, 0 CLA STL IAC RTL /REMEMBER IN CHANNEL #6 JMS I (EXSUB JMP I FOSUB .SBTTL COPY, RENAME, AND DELETE COMMANDS KILRT, 0 CLA STL IAC RTL /MESSAGE #6 JMS KRMHSH JMP I KILRT RENRT, 0 CLA CLL IAC RTL /MESSAGE #4 JMS KRMHSH JMP I RENRT MOVRT, 0 TAD (5 /MESSAGE #5 JMS KRMHSH JMP I MOVRT KRMHSH, 0 DCA KRMNM$ TAD I (MPARAM AND (20 /PICK OUT /H FOR HUSH SNA CLA JMP KRMND$ /NO HUSH CLA CLL CMA RAL /7776 AND I (MPARAM DCA I (MPARAM /TAKE OUT /L JMP I KRMHSH KRMNM$: 0 KRMND$: TAD KRMNM$ JMS I (LISPRT MSGLST JMP I KRMHSH .SBTTL TTL TECO.TEC LOAD TTSUB, 0 /MOVE TT COMMAND STRING TAD (-200 /TO TECO INPUT BUFFER DCA T /128 CHARS TAD (BEGLN-1 DCA XR2 TAD (7400-1 DCA XR TL$: CDF 0 TAD I XR2 CDF 10 AND (177 DCA I XR ISZ T JMP TL$ DCA I (MOFILE /SET FLAG FOR TECO.TEC TAD (7400 /AND CONTINUATION POINTER DCA I (MOFILE+1 JMP I TTSUB /THAT WAS EASY