/ File: SFD.PA / SFD X1.0 / / SET SFD. / (c) 1988 by Johnny Billquist / For use with SFDDRV driver in OS/8. / Internal use only! / FIELD 1 *2000 / ARG2=A2+1 DCODE=40 / START, CLA JMS 200 /INQUIRE. 12 A2, DEVICE SFD 0 JMP ERR4 JMS 200 /DECODE 5 5200 /SPECIAL MODE CMA TAD 37 /GET DEVICE TABLE OFFSET TAD 7605 /ADD SPECIFIED DEVICE NUMBER. DCA TMP TAD I TMP /GET DEV.H INFO ENTRY. SZA /NOT ZERO. NOT CO-RESIDENT WITH SYS. JMP ERR2 /NOT. USER ERROR 2 OKSFD, TAD 7611 /GET EXTENSION SNA /WAS IT NULL? JMS DFIND /YES. CHECK IF DEFAULT EXTENSION EXIST. CLA TAD 7605 /CHECK IF SPECIFIED EXTENSION EXIST JMS 200 /CALL USR 2 /FUNCTION=LOOKUP AR1, 7606 /POINTER TO FILENAME. AR2, 0 /ARG2 JMP ERR3 /ERROR. NO FILE FOUND FOUND, CMA TAD 37 /GET PTR TO DEVICE TABLE TAD ARG2 /ADD DEV.NUM DCA TMP /SAVE. TAD I TMP /GET INFO ABOUT DEV. AND (3600 /MASK RELATIVE BLOCK LOCATION CLL RAR;BSW /MOVE TO AC8-11 TAD (15 /ADD OFFSET TO DEVICE AREA. DCA BLK /SAVE AS BLOCK TO R/W CIF /READ BLOCK BY CALLING SYS: JMS 7607 210 /2 RECORDS INTO FIELD 1. BUFF BLK, 0 JMP ERR5 TAD AR1 /GET STARTING BLOCK OF FILE. DCA BUFF /SAVE TAD AR2 /GET SIZE. CIA /NEG. TAD AR1 /ADD START CIA /NEG. DCA BUFF+1 /SAVE AS END OF SFD. TAD 7605 /GET DEVICE NUMBER TAD (7646 /DEV.H RESIDENCY TABLE DCA TMP TAD I TMP /ENTRY POINT TO DEV.H DCA BUFF+2 /SAVE TAD BLK /MOVE DEVICE BLOCK TO WRITE OP. DCA BLK2 CIF /WRITE DEVICE DRIVER BACK. JMS 7607 4210 BUFF BLK2, 0 JMP ERR5 JMS SETPIP CLA IAC JMS 200 2 SBLK2, FNAM2 0 JMP ERR6 TAD (11 TAD SBLK2 DCA PBLK1 CIF JMS 7607 210 BUFF PBLK1, 0 JMP ERR5 TAD AR2 DCA DCODE^4+BUFF+2 TAD PBLK1 DCA PBLK22 CIF JMS 7607 4210 BUFF PBLK22, 0 JMP ERR5 END, CDF CIF JMP 7600 ERR6, ISZ E ERR5, ISZ E ERR4, ISZ E ERR3, ISZ E ERR2, JMS 200 7 E, 2 TMP, 0 FNAM, FILENAME PIP.SV FNAM2, FILENAME RESORC.SV / PAGE / SETPIP, 0 CLA IAC JMS 200 2 SBLK, FNAM 0 JMP ERR6 CLA CLL IAC RTL TAD SBLK DCA PBLK CIF JMS 7607 210 BUFF PBLK, 0 JMP ERR5 TAD AR2 DCA BUFF+200+DCODE TAD PBLK DCA PBLK2 CIF JMS 7607 4210 BUFF PBLK2, 0 JMP ERR5 JMP I SETPIP / DFIND, 0 /FIND FILE WITH DEFAULT EXTENSION TAD 7606 /COPY FILENAME DCA BUFF TAD 7607 DCA BUFF+1 TAD 7610 DCA BUFF+2 TAD (2304 /DEFAULT EXTENSION IS ".SD" DCA BUFF+3 TAD 7605 /GET DEVICE NO. JMS 200 /CALL USR 2 /FUNCTION=LOOKUP AR3, BUFF AR4, 0 JMP I DFIND /NOT FOUND. RETRY WITH NULL. TAD AR3 /FOUND. COPY RESULTS DCA AR1 TAD AR4 DCA AR2 JMP FOUND /CONTINUE / PAGE / BUFF, / $