!*************************** AMUS Program Label ****************************** ! Filename: LANPRT.BAS Date: 05/06/96 ! Category: UTIL Hash Code: 000-000-000-000 Version: 1.0(100) ! Initials: /AM Name: Mike L. Sessi ! Company: Birmingham Data Systems Inc. Telephone #: 707-795-1595 ! Related Files: lanset.run, sleep.sbr, logppn.sbr, READBL.sbr ! Min. Op. Sys.: AMOSL 1.0 Expertise Level: none !***************************************************************************** ! 04/01/96 mike sessi of birmingham data systems ! LANPRT USES LANSET FOR SET UP SPEC. ! ! THIS PROGRAM USES ! XCALL READBL.SBR ! reads a single block ! XCALL LOGPPN.SBR ! where am I logged into ! xcall sleep.sbr ! sometimes I sleep MAP1 DIR'FILE MAP2 DIR'PTR,B,2 MAP2 D'SEQ,X,510 ! 200 210 MAP1 MFDX ! master file directory 220 MAP2 MFD0(64) ! 64 p'pn in 1 disk block 230 MAP3 PPNX,B,2 ! p'pn number 240 MAP3 LNK2,B,2 ! Points to the UFD block, also the next ! MFD block number 250 MAP3 MFD3,B,2 ! PASS WORD ? 260 MAP3 MFD4,B,2 ! ??? ! MAP1 PPN0,S,9 ! Hold p,pn number [123,123] 270 MAP1 PPN1,S,3 ! P,PN 1st 3 numbers 280 MAP1 PPN2,S,3 ! 2nd 3 numbers MAP1 DIR'LNK,B,2 ! stores LNK2 ! 290 MAP1 UFD ! USER FILE DIRECTORY (42 ENTRYS/BLK) 300 MAP2 PTR,B,2 ! Next UFD block number 310 MAP2 UFDENT(42) 320 MAP3 UFDNAM1,B,2 ! 1ST 3 CHR'S 330 MAP3 UFDNAM2,B,2 ! 2ND 3 CHR'S 340 MAP3 UFDNAMX,B,2 ! 3RD 3 CHR'S (EXT) 350 MAP3 UFDBLKX,B,2 ! FILE SIZE 360 MAP3 UFDACTX,B,2 ! FILE TYP. IF 65503 THEN CONTIG 370 MAP3 UFDFPTX,B,2 ! LINK TO 1ST BLOCK of file 380 MAP2 FIL3,X,6 ! 390 MAP1 RAD5O 400 MAP2 RAD5,S,1 410 MAP2 RADX,S,50,"ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 " 450 RAD5=CHR(0) ! 420 MAP1 UNP,S,3 ! unpacked UFD file chars (3) 440 MAP1 NAME,S,10 ! the unpacked file name ! ! 510 ! MAP1 READBL 520 MAP1 DISK'DEVICE,S,7 ! give disk spec (dsk000: 530 MAP1 BLOCK'NO,B,4 ! give block number to read 540 MAP1 BUFFER,X,512 ! returns block info 560 MAP1 ERR'CODE,B,1 ! any problems ! MAP1 VARIABLE'LIST MAP2 X,F MAP2 R1,F MAP2 R2,F MAP2 R3,F MAP2 X3,F MAP2 Q,F MAP2 D,F MAP2 R,F MAP2 WHERE,S,50 ! DISK AND P,PN MAP2 W'DISK,S,7 ! DISK WHERE LOGGED INTO (DSK000:) MAP2 W'PPN,S,9 ! WHAT PPN ACCT ([000,000]) MAP2 SPOOL,S,20 ! LANSET UP PROGRAM MAP1 LANSET MAP2 LAN(20) MAP3 EXT,S,3 MAP3 TRM,S,6 MAP2 T'PPN,S,9 ! P,PN NUMBER FOR COPIES TO MAP2 FIL,S,323 ! EXP: [000,000] MAP1 FILE,S,10,"LANSET.UP" ! SIGNIFICANCE 11 STRSIZ 80 ! L1=0 : L2=0 LOOKUP "MEM:LOGPPN.SBR",L1 LOOKUP "RES:LOGPPN.SBR",L2 IF L1 +L2 =0 THEN PRINT "LOGPPN.SBR NEEDS TO LOADED INTO MEMORY" : END ! L1=0 : L2=0 LOOKUP "MEM:READBL.SBR",L1 LOOKUP "RES:READBL.SBR",L2 IF L1 +L2 =0 THEN PRINT "READBL.SBR NEEDS TO LOADED INTO MEMORY" : END ! L1=0 : L2=0 LOOKUP "MEM:SLEEP.SBR",L1 LOOKUP "RES:SLEEP.SBR",L2 IF L1 +L2 =0 THEN PRINT "SLEEP.SBR NEEDS TO LOADED INTO MEMORY" : END ! ! Where am I (what logical block) ! scan that block for files to be spooled and then deleted ! XCALL LOGPPN,WHERE D=INSTR(1,WHERE,":") W'DISK=WHERE[1,D] P=INSTR(D,WHERE,"[") W'PPN=WHERE[P,LEN(WHERE)] ! now I know where I am, lets find my directory block number ! START: CALL MFD ! SCAN MFD ! ! I have found my ppn; I now have my directory block number. ! set up for scaning of that directory block number. ! CALL LANSET ! LOAD PRINTER SPEC. S1: CALL DIR ! SCAN DIRECTORY BLOCK XCALL SLEEP,30 ! IF no file found, sleep for 30 seconds GOTO S1 700 MFD: 710 !READING THE MFD DISK'DEVICE=W'DISK : BLOCK'NO=1 ! MFD BLOCK CALL RD'DISK 630 MFDX=BUFFER : P'FOUND = 0 720 FOR MD=1 TO 64 ! 64 ppn's per block 730 IF PPNX(MD)=0 THEN MD=64 : GOTO OUT 740 CALL PPN'UNPACK 750 PPN0="["+PPN1+","+PPN2+"]" ! PRINT PPN0 ! TEST; PRINT P,PN IF W'PPN=PPN0 THEN P'FOUND=1 : DIR'LNK=LNK2(MD) : MD=64 OUT: NEXT MD RETURN LANSET: ! ! LOAD LANSET PRINTER SPEC. ! LOOKUP FILE,FOUND IF FOUND=0 THEN CHAIN "LANSET" OPEN #100,FILE,RANDOM,512,F1 F1=0 READ #100,LANSET CLOSE #100 RETURN 820 DIR: BLOCK'NO=DIR'LNK ! directory block to be scaned CALL RD'DISK UFD=BUFFER 880 FOR A0=1 TO 42 NAME=CHR(0) 900 UNP=CHR(0) 910 IF UFDBLKX(A0)=0 THEN A0=42 : GOTO DIR1 920 IF UFDNAM1(A0)=65535 THEN GOTO DIR1 ! no file 930 CALL RAD50 ! UNPACK THE FILE NAME ! ! PRINT NAME;".";UNP ! TEST; PRINT FILE NAME ! ! is the file in my list? where does it go ? ! scaning to see where to send file ! FOR A=1 TO 20 IF UNP=EXT(A) THEN CALL SPOOL ! FOUND ONE IF EXT(A) = "" THEN A=20 NEXT A ! DIR1: NEXT A0 RETURN SPOOL: ! Get ready to spool file. Run in silent mode. ! Copy file to other p,pn. Then erase file from current P,Pn. ! Spool file to selected printer. When file has printed, delete it. ! return to this program SPOOL=NAME+"."+UNP open #14,"lanprt.cmd",output print #14,":S" PRINT #14,"COPY "+T'PPN+ "="+SPOOL !* Could use MOVEIT here PRINT #14,"ERASE " + SPOOL ! ! PRINTER-NAME + FILE + PPN ! PRINT #14,"PRINT " + TRM(A) + SPOOL + T'PPN + "/DELETE" PRINT #14,"RUN LANPRT" CLOSE #14 CHAIN "LANPRT.CMD" ! beeee right backkkkkkk ! END ! ! ! READ DISK 1250 RD'DISK: 1260 XCALL READBL, DISK'DEVICE, BLOCK'NO, BUFFER,ERR'CODE 1270 RETURN ! ! FILE NAMES UNPACK ! 1330 RAD50: D=40 1340 X=UFDNAM1(A0) : CALL UNPACK : CALL RAD51 : NAME=UNP 1350 X=UFDNAM2(A0) : CALL UNPACK : CALL RAD51 : NAME=NAME+UNP 1360 X=UFDNAMX(A0) : CALL UNPACK : CALL RAD51 : NAME=NAME ! +"."+UNP 1370 RETURN 1380 RAD51: 1390 UNP=RAD5O[R1+1,R1+1]+RAD5O[R2+1,R2+1]+RAD5O[R3+1,R3+1] 1400 RETURN 1070 PPN'UNPACK: 1080 PPN1=CHR(0) : PPN2=CHR(0) : X=PPNX(MD) 1090 D=256 : CALL UNPACK ! CONVERT TO OCTAL 1100 D=8 : X=R2 : X3=R3 : CALL UNPACK 1110 IF R1 > 0 THEN PPN1=STR(R1)+STR(R2)+STR(R3) : GOTO PPN2 1120 IF R2 > 0 THEN PPN1=STR(R2)+STR(R3) : GOTO PPN2 1130 PPN1=STR(R3) 1140 PPN2: 1150 D=8 : X=X3 : CALL UNPACK 1160 IF R1 > 0 THEN PPN2=STR(R1)+STR(R2)+STR(R3) : GOTO PPN9 1170 IF R2 > 0 THEN PPN2=STR(R2)+STR(R3) : GOTO PPN9 1180 PPN2=STR(R3) 1190 PPN9: RETURN ! 1200 UNPACK: 1210 Q=INT(X/D) : R=X-Q*D : X=Q : R3=R 1220 Q=INT(X/D) : R=X-Q*D : X=Q : R2=R 1230 Q=INT(X/D) : R=X-Q*D : X=Q : R1=R ! ? D,R1;"-";R2;"/";R3 1240 RETURN !