IDENT GETFILE MACRO L,A A BSS 0 ENDM ORG 0 BSSZ 2 DATA 0LGETFILE,0LCLASS DATA 2 DATA 20 VFD 60/ENDWD+40 * FIELD LENGTH PLUS ROOM FOR PATCHES VFD 60/GETFILE *ENTRY POINT DATA 50 *CLIST SIZE VFD 60/GETFILE * SCRATCH FILE SIZE DATA 0,0 * SCRATCH FILE NAME DATA 0,0 * FILE ADDRESS, CM ADDRESS VFD 60/GETFILE WORD COUNT DATA 0 * READ WRITE ENTRY DATA 0LGETFILE DATA 0LS VFD 60/GETFILE,60/GETFILE * FILE ADDRESS, CM ADDRESS VFD 60/ENDWD-GETFILE * WORD COUNT DATA 1 * READ ONLY DATA -1 * END OF MAP SPECIFIERS DATA 0LOPERCL,0LOPERATE DATA 0 C.BEAD EQU 1 C.RFILE EQU 3 C.WFILE EQU 4 C.SENDE EQU 5 C.GETE EQU 6 C.OP EQU 14 C.TFILE EQU 20 C.NEWFIL EQU 21 C.TREQ EQU 22 C.TRSP EQU 23 ORG 100B RFILEIO L VFD 60/C.RFILE,60/C.TFILE BSSZ 3 WFILEIO L VFD 60/C.WFILE,60/C.NEWFIL BSSZ 3 SENDV L VFD 60/C.SENDE,60/C.TREQ BSSZ 2 GETV L VFD 60/C.GETE,60/C.TRSP DETACH VFD 1/1,29/=XDF:DTCH,30/C.OP,60/C.NEWFIL,60/-1,60/1 MKBLK L VFD 1/1,29/=XDF:CBLK,30/C.OP,60/C.NEWFIL BSSZ 1 DATA 1 . WORD COUNT FOR DISK SYSTEM MOVECAP L VFD 1/1,29/=XEC:CIN,30/C.OP,60/C.NEWFIL FROMC L BSSZ 1 TOC BSSZ 1 LASTBANP DATA 0 LASTBANW DATA 0 SDEVIC DATA 0 RETURN VFD 1/1,29/=XEC:RTRN,30/C.OP TAPECMMD L VFD 12/0,12/1,12/1001B,12/0,12/101B CMBUFF BSSZ 1000B LEN BSSZ 1 ENTRY BSSZ 4 SAVEP1. BSSZ 1 SAVEP2. BSSZ 1 SENDE MACRO EV BX6 EV SA6 SENDV+2 XJ SENDV ENDM XJ MACRO WHERE,OFF + VFD 12/0130B,18/WHERE,30/OFF ENDM FREAD MACRO FA,CNT,WA SX6 FA SX7 WA SA6 RFILEIO+2 SA7 RFILEIO+3 SX6 CNT SA6 RFILEIO+4 XJ RFILEIO,1 JP RCRASH ENDM FWRITE MACRO FA,CNT,WA SX6 FA SX7 WA SA6 WFILEIO+2 SA7 WFILEIO+3 SX6 CNT SA6 WFILEIO+4 SB7 *+1 XJ WFILEIO,1 JP NEWBLK ENDM MOVE MACRO FROM,TO SX6 FROM SX7 TO SA6 FROMC SA7 TOC XJ MOVECAP ENDM GET MACRO A,B SA1 A. SA2 B. SB6 B0 SB1 ENTRY SB7 C.NEWFIL XJ CALLBEAD ENDM PUT MACRO A,B SB6 1 SB1 ENTRY SB7 0 XJ CALLBEAD ENDM OPEN MACRO XJ OPEN,1000003B EQ -1 - VFD 30/*+1,60/0,30/1,30/C.NEWFIL ENDM CLOSE MACRO XJ CLOSE ENDM GETFILE L BX6 X4 BX7 X5 SA6 SAVEP1. BX7 X7-X7 . ONLY TEMP DIRECTORY ALLOWED SA7 SAVEP2. GET GETFILE,S PUT OPEN XJ READSELF CLOSE GET SELF,OPER PUT MOVE 2,C.TFILE FREAD 1,1,SDEVIC SA1 SDEVIC MOVE X1,C.TFILE MOVE X1+1,C.TREQ MOVE X1+2,C.TRSP GET SAVEP1,SAVEP2 OPEN COPYFILE SA1 TAPECMMD SX3 1 * POSITION IN FILE SA4 ENTRY+3 MX0 60-30 BX5 X0*X4 BX4 -X0*X4 * NEXT FILE ADDRESS TO GET BLOCK AX5 30 SX6 B0 SA6 LASTBANP * INITIALIZE BANNER WORD POINTER SA6 LASTBANW * INITIALIZE BANNER WORD COPYL L SENDE X1 XJ GETV NG X7,TESTEOF IR X7,COPYGD MX0 1 BX1 X1-X0 JP COPYL * RETRY WITH ERROR BIT TOGGLED TESTEOF L LX7 24+11-3 PL X7,TPERR SA1 LASTBANP FWRITE X1,1,LASTBANW SX0 1 IX2 X1+X0 FWRITE X2,2,FINALBAN JP OKFIN COPYGD L FREAD 0,1,LEN SA2 LEN SX6 5 PX6 X6 NX6 X6 PX2 X2 FX2 X2/X6 UX2 X2,B7 LX2 X2,B7 ZR X2,EOR FREAD 1,X2,CMBUFF FWRITE X3,X2,CMBUFF IX3 X3+X2 SX2 X2-512 ZR X2,COPYL EOR L SA2 LASTBANW BX6 X2 SA2 LASTBANP IX0 X3-X2 SX0 X0-1 BX6 X6+X0 SA6 LASTBANW FWRITE X2,1,LASTBANW BX6 X3 SA6 LASTBANP SX6 40B LX6 18 SX7 23B BX6 X6+X7 LX6 18 BX6 X6+X0 LX6 18 SA6 LASTBANW SX0 1 IX3 X3+X0 JP COPYL NEWBLK L BX6 X4 IX4 X4+X5 SA6 MKBLK+2 XJ MKBLK IX6 X6-X5 . OLD BLOCK ADDRESS BX7 X5 SA5 ENTRY+3 SX5 X5 . LAST BLOCK IN FILE IX6 X6-X5 BX5 X7 NG X6,ZZZZ . SKIP IF NEG SA6 DETACH+2 XJ DETACH ZZZZ BSS 0 JP B7 FIN. L PUT CLOSE XJ RETURN OKFIN L SA1 ENTRY+3 MX0 30 BX6 X0*X1 BX6 X6+X4 SA6 A1 SB6 5 SB1 OKMESS XJ CALLBEAD JP FIN. TPERR SB6 5 SB1 BADMESS XJ CALLBEAD JP FIN. ASCII XTEXT BADMESS ASCII (FILE LOAD ABORTED .. TAPE DRIVE ERROR) OKMESS ASCII (FILE LOADED) SELF. DATA 0LMASTER OPER. DATA 0LOPERATE CALLBEAD VFD 60/C.BEAD OPEN VFD 1/1,29/=XDF:OPRW,30/C.OP,60/C.NEWFIL CLOSE VFD 1/1,29/=XDF:CLO,30/C.OP,60/C.NEWFIL READSELF VFD 60/C.RFILE,60/C.NEWFIL VFD 60/0,60/0,60/ENTRY FINALBAN VFD 3/6,3/0,18/741033B,36/0 GETFILE. DATA 0LGETFILE S. DATA 0LS RCRASH DATA 0 * ECS SYSTEM ERROR ENDWD BSS 0 END