Directory of image this file is from
This file as a plain text file
/ FILE NAME : INTFS.SB LAST MOD : 21-NOV-81 / / IFLAG = INTFS(FWA,ODEV,OFNAM,IDEV,IFNAM) / / FWA := ADDRESS OF ZERO-FILLED BUFFER CONTAINING STRING / THAT IS TO BE INTERPRETED. / / FORMAT IS THE SAME AS THE COMMAND DECODER, / BUT ONLY DEV,FNAME,AND EXT ARE ALLOWED. / SEMICOLON IS ALLOWED IN PLACE OF COLON. / LEADING ASTERISK IS ALLOWED, AND IS IGNORED. / / ODEV:OFNAME.EX<IDEV:IFNAME.EX / / OFNAM,IFNAM := 4 WORD BUFFERS, INTO WHICH ARE PLACED: / 3 WORD, 6 CHAR ZERO-FILLED FILE NAME. / 1 WORD, 2 CHAR ZERO-FILLED EXTENSION. / / ODEV,IDEV := 2 WORD BUFFERS, INTO WHICH ARE PLACED: / 2 WORD, 4 CHAR ZERO-FILLED DEVICE NAME. / / IFLAG := -1 IF ERROR IN FORMAT. RESULTS UNDEFINED. / 0 IF FORMAT WAS O.K. / +1 IF END OF STRING ENCOUNTERED. / /------------ / / NORMAL CALLING SEQUENCE IS : / / READ(1,100)FWA / CALL ZFILL(FWA,LEN) / IF(INTFS(FWA,ODEV,OFNAM,IDEV,IFNAM))ERR,OK,OK / ////// ABSYM SUBR 0 /SO WE CAN TELL WHERE SUBROUTINES ARE. ABSYM TEMP 7 /DON'T CALL DUMMY SUBROUTINES. ABSYM FROM 10 /AUTO-INC FOR MOVING. ABSYM TO 11 /DITTO. ABSYM CTR 12 /DON'T USE THESE LOCS INDIRECTLY. ABSYM FRMFLG 13 /UNPACKING FLAG. ABSYM F1 125 /FILENAME BUFFER. ABSYM F2 126 ABSYM F3 127 ABSYM EX 130 /EXTENSION. ABSYM D1 131 /DEVICE NAME BUFFER. ABSYM D2 132 ABSYM OUTFLG 133 /OUTPUT SPEC FLAG. ABSYM DEVFLG 134 /DEVICE SPEC FLAG. ABSYM EXTFLG 135 /EXTENSION FLAG. ABSYM GETP 136 /UNPACKING POINTER. ABSYM PUTP 137 /PACKING POINTER. ENTRY INTFS LAP
/ ///// ENTRY \\\\\ / \\\\\ POINT ///// ENTPT, INTFS, BLOCK 2 TAD ENTPT DCA CDFA TAD (-12 DCA CTR TAD PLPTR DCA TO CDFA, TAD I ENTPT# /SABR CDF GETS MODIFIED. CDFAA, DCA I TO /FORCE CDF. INC ENTPT# ISZ CTR JMP CDFA CMA DCA OUTFLG /ALLOW OUTPUT SPEC. DCA FRMFLG /START WITH UPPER CHAR. TAD STRING DCA CDFG TAD STRING# DCA GETP JMS ZERO JMS MOVEI JMP ENTER /JUMP TO STRING KRACKER. / JMS ZERO - ZERO 6 WORD BUFFER. ZERO, SUBR DCA F1 DCA F2 DCA F3 DCA EX DCA D1 DCA D2 JMP I ZERO / AC = -#WORDS / JMS PLOAD - LOAD PARAMETER FROM BUFFER. / ARG1 - BUFFER ADDRESS. / ARG2 - POINTER TO PARAMETER DUMMYVAR. PLOAD, SUBR DCA CTR CMA TAD I PLOAD DCA FROM INC PLOAD TAD I PLOAD DCA TEMP TAD I TEMP DCA CDFT INC TEMP CMA TAD I TEMP DCA TO CDFF, TAD I FROM /FORCE CDF. CDFT, DCA I TO /SABR CDF GETS MODIFIED. ISZ CTR JMP CDFF PLOADX, INC PLOAD JMP I PLOAD F1PTR, F1 PLPTR, PLPTR STRING, BLOCK 2 ODEV, BLOCK 2 OFNAM, BLOCK 2 IDEV, BLOCK 2 IFNAM, BLOCK 2 / JMS MOVEI - MOVE BUFFER TO INPUT FILE PARAS. MOVEI, SUBR TAD (-2 JMS PLOAD D1 IDEV TAD (-4 JMS PLOAD F1 IFNAM JMP I MOVEI / JMS MOVEO - MOVE BUFFER TO OFILE BUFFER. MOVEO, SUBR TAD (-2 JMS PLOAD D1 ODEV TAD (-4 JMS PLOAD F1 OFNAM JMP I MOVEO / JMS FINIT - INITIALIZE FOR FILE SPEC. FINIT, SUBR CMA DCA EXTFLG /ALLOW EXTENSION CMA DCA DEVFLG /ALLOW DEVICE. JMS ZERO JMS SINIT JMP I FINIT / JMS SINIT - STRING KRACKING INITIALIZATION. SINIT, SUBR TAD (-7 DCA CTR TAD F1PTR DCA PUTP JMP I SINIT PAGE / JMS GET1 - GET A 6-BIT CHAR FROM STRING. / AC = 6 BIT CHAR. GET1, SUBR CDFG, TAD I GETP /SABR CDF GETS MODIFIED. ISZ FRMFLG JMP LEFT6 INC GETP /TAKING RIGHT 6. MOVE TO NEXT WORD. JMP GET1X LEFT6, DCA TEMP CMA DCA FRMFLG /RESET FOR RIGHT 6. TAD TEMP RTR RTR RTR GET1X, AND (77 JMP I GET1 / AC = 6-BIT CHAR. / JMS PUT1 - PUT A 6-BIT CHAR INTO BUFFER. CH, PUT1, SUBR DCA TEMP TAD I PUTP AND (7700 SNA JMP NEWORD /STARTING NEW WORD. TAD TEMP /FINISHING OLD WORD. DCA I PUTP INC PUTP JMP I PUT1 NEWORD, TAD TEMP CLL RTL RTL RTL DCA I PUTP JMP I PUT1 ///// LOOP FOR INTERPRETTING STRING. / STRING MUST END IN AT LEAST 1 6-BIT 00. / / ENTRY TO LOOP IS AT "ENTER". OUTCH, ISZ OUTFLG JMP ERR ENTER, JMS MOVEO JMS FINIT JMS GET1 TAD (-52 /-"* 00-52 SNA JMP KRACK /IGNORE LEADING ASTERISK TAD (52 JMP KRACK1 TEXTCH, TAD CH JMS PUT1 KRACK, JMS GET1 KRACK1, DCA CH TAD CH SNA JMP EOL /EOL IF 00. TAD (-74 /-"< 00-74 SNA JMP OUTCH /IF "<", END OF OUTPUT IAC /"<-"; 74-73 SNA JMP DEVCH /IF ";", END OF DEVICE IAC /";-": 73-72 SNA JMP DEVCH /IF ":", END OF DEVICE SMA JMP ERR /IF ABOVE NUMBERS TAD (12 /":-"0 72-60 SMA JMP NUMCH /IF NUMBER TAD (2 /"0-". 60-56 SNA JMP EXTCH /IF PERIOD, EXTENSION FOLLOWS TAD (16 /".-" /56-40 SNA JMP KRACK /IF SPACE, IGNORE TAD (6 /" -"Z 40-32 SMA SZA JMP ERR /IF ABOVE ALPHABETICS NUMCH, CLA /ALPHABETIC OR NUMERIC ISZ CTR JMP TEXTCH /PUT CHAR IN BUFFER. /SKIPS IF TOO MANY CHARS. ERR, CLA CMA /-1 ERROR. JMP XIT EXTCH, ISZ EXTFLG JMP ERR /TOO MANY PERIODS. TAD (-3 /PREPARE TO GET EXTENSION. DCA CTR TAD EXPTR DCA PUTP DCA DEVFLG /FORBID DEVICE SPEC. JMP KRACK /GO GET EXTENSION. EXPTR, EX DEVCH, TAD F3 SNA CLA /SKIP IF MORE THAN 4 CHARS. ISZ DEVFLG JMP ERR /5 OR 6 CHARS, OR TOO MANY :'S. TAD F1 /MOVE DEVICE NAME. DCA D1 DCA F1 TAD F2 DCA D2 DCA F2 JMS SINIT /TRY AGAIN FOR FILE NAME. JMP KRACK EOL, JMS MOVEI IAC /FLAG EOL FOUND. XIT, RETRN INTFS END