home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / lan / basnet / printest.bas < prev    next >
BASIC Source File  |  1987-05-18  |  22KB  |  571 lines

  1. 10    '
  2. 20    ' PRINTEST.BAS
  3. 30    '
  4. 40    ' Allows testing of different printing techniques and methods
  5. 60    '
  6. 100    GOSUB 10000    'set up the network access and library calls
  7.  
  8. 200    'MAIN MENU SELECTION
  9. 205    CLS
  10. 210    PRINT "************** MENU **************"
  11. 215    PRINT "1. Set spool flags (E0h(02h))
  12. 220    print "2. Set DEFAULT spool flags (B8h)
  13. 225    print "3. Modify list (LST) device method
  14. 230    print "4. Capture file method
  15. 235    print "5. Print an existing file method
  16. 236    PRINT "6. Print on multiple file servers
  17. 240    print "**********************************"
  18. 245    print
  19. 250    input "Select option: ",v%
  20. 255    on v%  GOTO 300,1000,2000,3000,4000,5000
  21. 260    system
  22.  
  23. 300    'SET THE SPOOL FLAGS
  24. 302    cls: FF%=0: DELFILE%=0: TABENABLE%=64: BANPAGE%=128: B$=STRING$(13,0)
  25. 303    TABS%=5: PTRNUM%=0: NUMCOPS%=1: FTYPE%=0: BTEXT$="SETSPL-TEST"
  26. 304    PRINT "******** SPOOL FLAGS WILL BE SET TO ********
  27. 310    PRINT "1. Auto form feed:
  28. 320    PRINT "2. Delete file after print:
  29. 330    PRINT "3. Enable tab expansion: "
  30. 340    PRINT "4. Print banner page: "
  31. 350    PRINT
  32. 360    PRINT "5. Tab size (1-20): "
  33. 370    PRINT "6. Network printer #: "
  34. 380    PRINT "7. Copies: "
  35. 390    PRINT "8. Form type: "
  36. 400    PRINT "9. Banner text (13 chars max): 
  37. 410    PRINT "********************************************": PRINT
  38. 415    LOCATE 2,20: IF FF% = 0 THEN PRINT "YES" ELSE PRINT "NO "
  39. 416    LOCATE 3,29: IF DELFILE% = 0 THEN PRINT "NO " ELSE PRINT "YES"
  40. 417    LOCATE 4,26: IF TABENABLE% = 64 THEN PRINT "YES" ELSE PRINT "NO "
  41. 418    LOCATE 5,23: IF BANPAGE% = 128 THEN PRINT "YES" ELSE PRINT "NO "
  42. 419    LOCATE 7,21: PRINT TABS% SPC(20)
  43. 420    LOCATE 8,23: PRINT PTRNUM% SPC(20)
  44. 421    LOCATE 9,12: PRINT NUMCOPS% SPC(20)
  45. 422    LOCATE 10,15: PRINT FTYPE% SPC(20)
  46. 423    LOCATE 11,32: PRINT BTEXT$ SPC(20)
  47. 425    LOCATE 14,1: PRINT SPC(78): LOCATE 14,1
  48. 427    INPUT "Select setting to change, <enter> to exit, or 'S'et: ",v$
  49. 430    IF V$ = "" THEN GOTO 200
  50. 432    IF V$ <> "s" AND V$ <> "S" THEN GOTO 480
  51. 434     REQ$ = CHR$(2) + CHR$(FF%+DELFILE%+TABENABLE%+BANPAGE%) + CHR$(TABS%)
  52. 435    REQ$ = REQ$ + CHR$(PRTNUM%) + CHR$(NUMCOPS%) + CHR$(FTYPE%)
  53. 436    IF BTEXT$ <> "" THEN REQ$ = REQ$ + CHR$(0) + BTEXT$ + STRING$(13-LEN(BTEXT$),0) + CHR$(0)
  54. 437    REQ$ = CHR$(LEN(REQ$))+CHR$(0) + REQ$
  55. 438    REP$ = CHR$(0)+CHR$(0)
  56. 440    DEF SEG = LIBSEG
  57. 450    CALL SPLREQ(ERRCODE%,REQ$,REP$)
  58. 460    DEF SEG
  59. 470    IF ERRCODE% <> 0 THEN INPUT "Error setting spool flags. <enter> ",v$: goto 200
  60. 475    INPUT "SPOOL FLAGS SET!! <enter> ",v$: goto 200
  61. 480    V% = VAL(V$)
  62. 485    ON V% GOTO 500,520,540,560,600,700,800,900,950
  63. 490    GOTO 415
  64. 500     IF FF% = 8 THEN FF% = 0 ELSE FF% = 8
  65. 510    GOTO 415
  66. 520    IF DELFILE% = 32 THEN DELFILE% = 0 ELSE DELFILE% = 32
  67. 530    GOTO 415
  68. 540    IF TABENABLE% = 64 THEN TABENABLE% = 0 ELSE TABENABLE% = 64
  69. 550    GOTO 415
  70. 560    IF BANPAGE% = 128 THEN BANPAGE% = 0 ELSE BANPAGE% = 128
  71. 570    GOTO 415
  72. 600    LOCATE 16,1: INPUT "New tab size: ",TABS%
  73. 605    LOCATE 16,1: PRINT SPC(70)
  74. 610    IF TABS% < 1 OR TABS% > 20 THEN 600
  75. 620    GOTO 415
  76. 700     LOCATE 16,1: INPUT "Network printer #: ",PTRNUM%
  77. 720    LOCATE 16,1: PRINT SPC(70)" "
  78. 730    GOTO 415
  79. 800    LOCATE 16,1: INPUT "Number of copies to print: ",NUMCOPS%
  80. 820    LOCATE 16,1: PRINT SPC(70)""
  81. 830    GOTO 415
  82. 900    LOCATE 16,1: INPUT "Form type (0 - 255): ",ftype%
  83. 920    LOCATE 16,1: PRINT SPC(70)
  84. 930    GOTO 415
  85. 950    LOCATE 16,1: INPUT "Banner name (1-13 chars): ",BTEXT$
  86. 960    LOCATE 16,1: PRINT SPC(70)
  87. 970    GOTO 415
  88.  
  89. 1000    ' SET DEFAULT SPOOL FLAGS
  90. 1001    ' FIRST GET THE CURRENT DEFAULT SETTINGS
  91. 1002    REQ$ = STRING$(25,0): MODE% = 0
  92. 1004    DEF SEG= LIBSEG
  93. 1006    CALL SETSPL(REQ$,MODE%)
  94. 1008    DEF SEG
  95. 1010    CLS
  96. 1012    IF ASC(MID$(REQ$,1,1)) = 0 THEN STAT$ = "ENABLED" ELSE STAT$ = "DISABLED"
  97. 1013    PF% = ASC(MID$(REQ$,2,1))
  98. 1014        FF% = PF% MOD 16
  99. 1015        DELFILE% = (PF% - FF%) MOD 64
  100. 1016        TABENABLE% = (PF% - FF% - DELFILE%) MOD 128
  101. 1017        BANPAGE% = (PF% \ 128) * 128
  102. 1018     TABS% = ASC(MID$(REQ$,3,1))
  103. 1019    PTRNUM% = ASC(MID$(REQ$,4,1))
  104. 1020    NUMCOPS% = ASC(MID$(REQ$,5,1))
  105. 1021    FTYPE% = ASC(MID$(REQ$,6,1))
  106. 1022    BTEXT$ = MID$(REQ$,8,13)
  107. 1023    LPTR% = ASC(MID$(REQ$,22,1))
  108. 1024    TOUT! = CVI(MID$(REQ$,23,2))
  109. 1025    DEVICE% = ASC(MID$(REQ$,25,1))
  110. 1030    PRINT "******** DEFAULT SPOOL FLAGS ARE (WILL BE) ********
  111. 1035    PRINT "1."
  112. 1040    PRINT
  113. 1045    PRINT "2. Auto form feed:
  114. 1050    PRINT "3. Delete file after print:
  115. 1055    PRINT "4. Enable tab expansion: "
  116. 1060    PRINT "5. Print banner page: "
  117. 1065    PRINT
  118. 1070    PRINT "6. Tab size (1-20): "
  119. 1075    PRINT "7. Network printer #: "
  120. 1080    PRINT "8. Copies: "
  121. 1085    PRINT "9. Form type: "
  122. 1090    PRINT "10. Banner text (13 chars max): 
  123. 1095    PRINT "11. Local printer:"
  124. 1100    PRINT "12. Time out (1/18ths of seconds):"
  125. 1105    PRINT "13. Device close endspool:"
  126. 1110    PRINT "********************************************"
  127. 1115    LOCATE 2,4: PRINT STAT$ "    "
  128. 1116    LOCATE 4,20: IF FF% = 0 THEN PRINT "YES" ELSE PRINT "NO "
  129. 1117    LOCATE 5,29: IF DELFILE% = 0 THEN PRINT "NO " ELSE PRINT "YES"
  130. 1118    LOCATE 6,26: IF TABENABLE% = 64 THEN PRINT "YES" ELSE PRINT "NO " 
  131. 1119    LOCATE 7,23: IF BANPAGE% = 128 THEN PRINT "YES" ELSE PRINT "NO "
  132. 1120    LOCATE 9,21: PRINT TABS% SPC(20)
  133. 1121    LOCATE 10,23: PRINT PTRNUM% SPC(20)
  134. 1122    LOCATE 11,12: PRINT NUMCOPS% SPC(20)
  135. 1123    LOCATE 12,15: PRINT FTYPE% SPC(20)
  136. 1124    LOCATE 13,33: PRINT BTEXT$ SPC(20)
  137. 1125    LOCATE 14,20: PRINT LPTR% SPC(20)
  138. 1126    LOCATE 15,36: PRINT TOUT! SPC(20)
  139. 1127    LOCATE 16,28: IF DEVICE% = 0 THEN PRINT "YES" ELSE PRINT "NO "
  140. 1128    LOCATE 19,1: PRINT SPC(78): LOCATE 19,1
  141. 1129    INPUT "Select setting to change, <enter> to exit, or 'S'et: ",v$
  142. 1130    IF V$ = "" THEN GOTO 200
  143. 1132    IF V$ <> "s" AND V$ <> "S" THEN GOTO 1180
  144. 1133    IF STAT$ = "ENABLED" THEN REP$ = CHR$(0) ELSE REP$ = CHR$(1)
  145. 1134    REP$ = REP$ + CHR$(FF%+DELFILE%+TABENABLE%+BANPAGE%) + CHR$(TABS%)
  146. 1136    REP$ = REP$ + CHR$(PRTNUM%) + CHR$(NUMCOPS%) + CHR$(FTYPE%) + CHR$(0)
  147. 1137    REP$ = REP$ + BTEXT$ + STRING$(13-LEN(BTEXT$),0) + CHR$(0) + CHR$(LPTR%)
  148. 1138    REP$ = REP$ + CHR$(TOUT!\256) + CHR$(TOUT! MOD 256) + CHR$(DEVICE%)
  149. 1139    REP$ = CHR$(25)+CHR$(0) + REP$
  150. 1140    MODE% = 1
  151. 1145    DEF SEG = LIBSEG
  152. 1150    CALL SETSPL(REP$,MODE%)
  153. 1160    DEF SEG
  154. 1175    INPUT "DEFAULT SPOOL FLAGS SET!! <enter> ",v$
  155. 1176    goto 200
  156.  
  157. 1180    V% = VAL(V$)
  158. 1185    ON V% GOTO 1200,1210,1220,1240,1260,1280,1300,1320,1340,1360,1380,1400,1420
  159. 1190    GOTO 1115
  160. 1200    IF STAT$ = "ENABLED" THEN STAT$ = "DISABLED" ELSE STAT$ = "ENABLED"
  161. 1205    GOTO 1115
  162. 1210    IF FF% = 8 THEN FF% = 0 ELSE FF% = 8
  163. 1215    GOTO 1115
  164. 1220    IF DELFILE% = 32 THEN DELFILE% = 0 ELSE DELFILE% = 32
  165. 1230    GOTO 1115
  166. 1240    IF TABENABLE% = 64 THEN TABENABLE% = 0 ELSE TABENABLE% = 64
  167. 1250    GOTO 1115
  168. 1260    IF BANPAGE% = 128 THEN BANPAGE% = 0 ELSE BANPAGE% = 128
  169. 1270    GOTO 1115
  170. 1280    LOCATE 21,1: INPUT "New tab size: ",TABS%
  171. 1283    LOCATE 21,1: PRINT SPC(70)
  172. 1286    IF TABS% < 1 OR TABS% > 20 THEN 600
  173. 1290    GOTO 1115
  174. 1300    LOCATE 21,1: INPUT "Network printer #: ",PTRNUM%
  175. 1305    LOCATE 21,1: PRINT SPC(70)" "
  176. 1310    GOTO 1115
  177. 1320    LOCATE 21,1: INPUT "Number of copies to print: ",NUMCOPS%
  178. 1325    LOCATE 21,1: PRINT SPC(70)""
  179. 1330    GOTO 1115
  180. 1340    LOCATE 21,1: INPUT "Form type (0 - 255): ",ftype%
  181. 1345    LOCATE 21,1: PRINT SPC(70)
  182. 1350    GOTO 1115
  183. 1360    LOCATE 21,1: INPUT "Banner name (1-13 chars): ",BTEXT$
  184. 1365    LOCATE 21,1: PRINT SPC(70)
  185. 1375    GOTO 1115
  186. 1380    LOCATE 21,1: INPUT "Local printer (LPT 1,2, or 3): ",lptr%
  187. 1385    LOCATE 21,1: PRINT SPC(70)
  188. 1390    GOTO 1115
  189. 1400    LOCATE 21,1: INPUT "Time out value (1/18ths of sec.): ",tout!
  190. 1405    LOCATE 21,1: PRINT SPC(70)
  191. 1410    GOTO 1115
  192. 1420    IF DEVICE% = 0 THEN DEVICE% = 1 ELSE DEVICE% = 0
  193. 1430    GOTO 1115
  194.  
  195. 2000    'MODIFY LIST DEVICE OPTIONS
  196. 2010    CLS
  197. 2020    PRINT "*****************************************
  198. 2030    PRINT "1. Start list catch
  199. 2040    PRINT "2. Send data to list catch
  200. 2050    PRINT "3. End list catch and queue for printing
  201. 2060    PRINT "4. Abort list catch
  202. 2070    PRINT "*****************************************
  203. 2080    PRINT
  204. 2090    INPUT "Select option: ",v$
  205. 2100    IF V$ = "" THEN 200
  206. 2110    V% = VAL(V$)
  207. 2120    IF V% < 1 OR V% > 4 THEN 2000
  208. 2130    ON V% GOTO 2200,2300,2400,2500
  209. 2140    GOTO 2000
  210. 2200    DEF SEG = LIBSEG
  211. 2210    MODE% = 0
  212. 2220    CALL CTLSPL(MODE%)
  213. 2230    DEF SEG
  214. 2240    IF MODE% <> 0 THEN INPUT "...FAILED!!! <enter> ",v$: goto 2000
  215. 2250    INPUT "List catch has been started. <enter> ",v$
  216. 2260    GOTO 2000
  217. 2300    INPUT "Enter a print line (<enter> only when done): ",p$
  218. 2305    IF P$ = "" THEN 2000
  219. 2310    LPRINT P$
  220. 2320    GOTO 2000
  221. 2400    DEF SEG = LIBSEG
  222. 2410    MODE% = 1
  223. 2420    CALL CTLSPL(MODE%)
  224. 2430    DEF SEG
  225. 2440    IF MODE% <> 0 THEN INPUT "...FAILED!!! <enter> ",v$: goto 2000
  226. 2450    INPUT "List catch has been queued for print. <enter> ",v$
  227. 2460    GOTO 2000
  228. 2500    DEF SEG = LIBSEG
  229. 2510    MODE% = 2
  230. 2520    CALL CTLSPL(MODE%)
  231. 2530    DEF SEG
  232. 2540    IF MODE% <> 0 THEN INPUT "...FAILED!!! <enter> ",v$: goto 2000
  233. 2550    INPUT "List catch has aborted. <enter> ",v$
  234. 2560    GOTO 2000
  235.  
  236. 3000    'CAPTURE FILE OPTIONS
  237. 3010    CLS
  238. 3020    PRINT "******************************************"
  239. 3030    PRINT "1. Create (open) a specified capture file
  240. 3040    PRINT "2. Send data to the capture file
  241. 3050    PRINT "3. Close and queue the capture file
  242. 3055    PRINT "4. Abort and delete the capture file
  243. 3060    PRINT "******************************************"
  244. 3070    PRINT 
  245. 3080    INPUT "Select option: ",v$
  246. 3090    IF V$ = "" THEN GOTO 200
  247. 3100    V% = VAL(V$)
  248. 3110    IF V%<1 OR V%>4 THEN 3000
  249. 3120    ON V% GOTO 3200,3500,3700,3800
  250.  
  251. 3200    'CREATE A CAPTURE FILE ON THE DEFAULT DRIVE
  252. 3201    'we need the current drive, since this program will only
  253. 3202    'create a file in the current directory or a sub directory
  254. 3203    DRIVE% = 0
  255. 3205    DEF SEG = LIBSEG
  256. 3207    CALL GETDRV(DRIVE%)
  257. 3209    DEF SEG
  258. 3210    'FIRST get the path base
  259. 3230    RETURNFLAGS% = 0
  260. 3240    DEF SEG = LIBSEG
  261. 3250    CALL DRVMAP(RETURNFLAGS%,DRIVE%)
  262. 3260    DEF SEG
  263. 3270    BASEFLAG% = RETURNFLAGS%/256 ' the base flag is the high byte of the return
  264. 3280    PATHBASE% = (RETURNFLAGS% - (BASEFLAG% * 256)) ' the path base is the low byte of the return
  265. 3290    PATHBASE$ = CHR$(PATHBASE%)
  266. 3300    PRINT: INPUT "Enter capture file name (will be on your default drive): ",captfile$
  267. 3310    FUNC$ = CHR$(9)
  268. 3350    CAPTLEN$ = CHR$(LEN(CAPTFILE$))
  269. 3360    HIPACLEN$ = CHR$(0)
  270. 3370    LOPACLEN$ = CHR$(3 + ASC(CAPTLEN$))
  271. 3380    ERRCODE% = 0
  272. 3390    REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + PATHBASE$ + CAPTLEN$ + CAPTFILE$
  273. 3400    REPLY$ = CHR$(0) + CHR$(0)
  274. 3410    DEF SEG = LIBSEG
  275. 3420    CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
  276. 3430    DEF SEG
  277. 3440    IF ERRCODE% <> 0 THEN INPUT "Unable to open the capture file. <enter> ",V$
  278. 3450    PRINT "Capture file opened successfully!"
  279. 3460    INPUT " <enter> ",v$
  280. 3470    GOTO 3000
  281.  
  282. 3500    'SEND DATA TO THE CAPTURE FILE
  283. 3510    PRINT "Enter data to print: (<enter> only to exit)
  284. 3520    TEMPDATA$ = "*"
  285. 3560    WHILE LEN(TEMPDATA$) > 0
  286. 3565        LINE INPUT TEMPDATA$
  287. 3570        IF LEN(TEMPDATA$) > 255 THEN HIPACLEN$ = CHR$(1) ELSE HIPACLEN$ = CHR$(0)
  288. 3580             LOPACLEN$ = CHR$(1+LEN(TEMPDATA$))
  289. 3590        FUNC$ = CHR$(0)
  290. 3600        ERRCODE% = 0
  291. 3610        REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + TEMPDATA$
  292. 3620        REPLY$ = CHR$(0) + CHR$(0)
  293. 3630        DEF SEG = LIBSEG
  294. 3640        CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
  295. 3650        DEF SEG
  296. 3660        IF ERRCODE% <> 0 THEN INPUT "Unable to write to capture file. <enter>",v$
  297. 3680    WEND
  298. 3690    GOTO 3000
  299.  
  300. 3700    ' CLOSE AND QUEUE THE CAPTURE FILE
  301. 3705    HIPACLEN$ = CHR$(0)
  302. 3710    LOPACLEN$ = CHR$(2)
  303. 3715    FUNC$ = CHR$(1)
  304. 3720    ABORTFLAG$ = CHR$(0)
  305. 3725    ERRCODE% = 0
  306. 3730    REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + ABORTFLAG$
  307. 3735    REPLY$ = CHR$(0) + CHR$(0)
  308. 3740    DEF SEG = LIBSEG
  309. 3745    CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
  310. 3750    DEF SEG
  311. 3755    IF ERRCODE% <> 0 THEN INPUT "Failed to close and queue the file. <enter>",v$: GOTO 3000
  312. 3757    INPUT "Capture file queued for printing. <enter> ",V$
  313. 3760    GOTO 3000
  314.  
  315. 3800    'ABORT THE CAPTURE AND DELETE IT
  316. 3810    REQ$ = CHR$(2)+CHR$(0) + CHR$(0) + CHR$(255)
  317. 3815    REP$ = STRING$(2,0)
  318. 3820    DEF SEG = LIBSEG
  319. 3830    CALL SPLREQ(ERRCODE%, REQ$, REP$)
  320. 3840    DEF SEG
  321. 3845    IF ERRCODE% <> 0 THEN INPUT "Unable to abort!!! <enter> ",v$: GOTO 3000
  322. 3850    INPUT "CAPTURE FILE ABORTED. <enter> ",V$
  323. 3860    GOTO 3000
  324.  
  325. 4000    'PRINT AN EXISTING FILE
  326. 4005    PRINT: LINE INPUT "Enter the file to print (must be on current drive): ",SPOOLTHIS$
  327. 4010    'we need the current drive, since this program will only
  328. 4020    'work for files in the current directory or a sub directory
  329. 4040    DRIVE% = 0
  330. 4050    DEF SEG = LIBSEG
  331. 4060    CALL GETDRV(DRIVE%)
  332. 4070    DEF SEG
  333. 4110    'now get the path base
  334. 4130    RETURNFLAGS% = 0
  335. 4140    DEF SEG = LIBSEG
  336. 4150    CALL DRVMAP(RETURNFLAGS%,DRIVE%)
  337. 4160    DEF SEG
  338. 4170    BASEFLAG% = RETURNFLAGS%/256 ' the base flag is the high byte of the return
  339. 4180    PATHBASE% = (RETURNFLAGS% - (BASEFLAG% * 256)) ' the path base is the low byte of the return
  340. 4190    PATHBASE$ = CHR$(PATHBASE%)
  341. 4210    ' now spool the file
  342. 4230    FUNC$ = CHR$(3)
  343. 4240    SPOOLLEN$ = CHR$(LEN(SPOOLTHIS$))
  344. 4250    HIPACLEN$ = CHR$(0)
  345. 4260    LOPACLEN$ = CHR$(3 + LEN(SPOOLTHIS$))
  346. 4270    ERRCODE% = 0
  347. 4280    REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + PATHBASE$ + SPOOLLEN$ + SPOOLTHIS$
  348. 4290    REPLY$ = CHR$(0) + CHR$(0)
  349. 4300    DEF SEG = LIBSEG
  350. 4310    CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
  351. 4320    DEF SEG
  352. 4330    IF ERRCODE% <> 0 THEN INPUT "Unable to spool the file. <enter>",V$: GOTO 3000
  353. 4340    INPUT "FILE PRINTED. <enter> ",V$
  354. 4350    GOTO 200
  355.  
  356. 5000    ' first find out how many file servers we are attached to
  357. 5010    ' first we need to get the address of the server mapping table
  358. 5012    CLS
  359. 5014    PRINT "DO NOT RUN THIS OPTION AS PART OF ANY OF THE OTHERS."
  360. 5016    INPUT "IT PERFORMS ALL IT'S OWN SPOOLING STEPS - Continue? ",v$
  361. 5017    IF V$ <> "Y" AND V$ <> "y" THEN GOTO 200
  362. 5022    ' first we need to get the address of the server mapping table
  363. 5024    '   (Function Call EFh)
  364. 5026    MODE% = 3    'get server mapping table address function
  365. 5028    '
  366. 5030    DEF SEG = LIBSEG
  367. 5032    CALL GETSTA(MODE%, STSEGMENT%, STOFFSET%)
  368. 5033    MODE% = 4
  369. 5034    CALL GETSTA(MODE%,STSEGMENT%,NTOFF%)
  370. 5036    DEF SEG = STSEGMENT%
  371. 5037    '
  372. 5038    ' Now we will display the table contents for demo purposes
  373. 5040    PRINT "Server mapping table contents:": PRINT
  374. 5042    FOR I = 0 TO 7
  375. 5044    PRINT I+1,;
  376. 5046      FOR X = 0 TO 13
  377. 5048        PRINT RIGHT$("00"+HEX$(PEEK(STOFFSET% + (32*I) + X)),2);
  378. 5050      NEXT X
  379. 5051      PRINT SPC(3);
  380. 5052      FOR X = 0 TO 19
  381. 5053        A$ = CHR$(PEEK(NTOFF% + (I*48) + X))
  382. 5054        IF A$ = CHR$(0) THEN X = 19 ELSE PRINT A$;
  383. 5055      NEXT X
  384. 5056      PRINT
  385. 5057    NEXT I
  386. 5058    PRINT 
  387.  
  388. 5220    MODE% = 3 'get server mapping table address function
  389. 5230    DEF SEG = LIBSEG
  390. 5240    CALL GETSTA(MODE%, STSEGMENT%, STOFFSET%)
  391. 5250    DEF SEG
  392. 5260    ' now check the table entries to see if they are in use and if they match our target
  393. 5270    DEF SEG = STSEGMENT%
  394. 5280    ENTRY% = 0
  395. 5290    DRIVE1% = PEEK(STOFFSET% + (32 * ENTRY%))
  396. 5300    ENTRY% = 1
  397. 5310    DRIVE2% = PEEK(STOFFSET% + (32 * ENTRY%))
  398. 5320    ENTRY% = 2
  399. 5330    DRIVE3% = PEEK(STOFFSET% + (32 * ENTRY%))
  400. 5340    ENTRY% = 3
  401. 5350    DRIVE4% = PEEK(STOFFSET% + (32 * ENTRY%))
  402. 5360    ENTRY% = 4
  403. 5370    DRIVE5% = PEEK(STOFFSET% + (32 * ENTRY%))
  404. 5380    ENTRY% = 5
  405. 5390    DRIVE6% = PEEK(STOFFSET% + (32 * ENTRY%))
  406. 5400    ENTRY% = 6
  407. 5410    DRIVE7% = PEEK(STOFFSET% + (32 * ENTRY%))
  408. 5420    ENTRY% = 7
  409. 5430    DRIVE8% = PEEK(STOFFSET% + (32 * ENTRY%))
  410. 5440    DEF SEG
  411. 5500    ' now send data to each file server which is attached
  412. 5510    IF DRIVE1% = 255 THEN DRIVE% = 1: GOSUB 9000
  413. 5520    IF DRIVE2% = 255 THEN DRIVE% = 2: GOSUB 9000
  414. 5530    IF DRIVE3% = 255 THEN DRIVE% = 3: GOSUB 9000
  415. 5540    IF DRIVE4% = 255 THEN DRIVE% = 4: GOSUB 9000
  416. 5550    IF DRIVE5% = 255 THEN DRIVE% = 5: GOSUB 9000
  417. 5560    IF DRIVE6% = 255 THEN DRIVE% = 6: GOSUB 9000
  418. 5570    IF DRIVE7% = 255 THEN DRIVE% = 7: GOSUB 9000
  419. 5580    IF DRIVE8% = 255 THEN DRIVE% = 8: GOSUB 9000
  420. 5590    PRINT "All Servers have had your messages spooled to them. Check it out!"
  421. 5600    PRINT
  422. 5610    INPUT "<enter> ";re$
  423. 5620    GOTO 200
  424.  
  425. 9000 '
  426. 9005 ' first set the preferred file server
  427. 9010     MODE% = 0 'mode to set the preferred file server
  428. 9020     DEF SEG = LIBSEG
  429. 9030     CALL SETSERV(MODE%,DRIVE%,CURRENTSERVER%)
  430. 9040     DEF SEG
  431. 9200      '
  432. 9210      ' set     the spool flags
  433. 9220      '
  434. 9230      LOPACLEN$ = CHR$(6)
  435. 9240      HIPACLEN$ = CHR$(0)
  436. 9250      FUNC$ = CHR$(2)
  437. 9260      PRINTFLAG$ = CHR$(224)
  438. 9270      TABSIZE$ = CHR$(5)
  439. 9280      TARGETPRINTER$ = CHR$(0)
  440. 9290      NUMBERCOPIES$ = CHR$(1)
  441. 9300      FORMTYPE$ = CHR$(0)
  442. 9310      ERRCODE% = 0
  443. 9320      REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + PRINTFLAG$ + TABSIZE$ + TARGETPRINTER$ + NUMBERCOPIES$ + FORMTYPE$
  444. 9330      REPLY$ = CHR$(0) + CHR$(0)
  445. 9340      DEF SEG = LIBSEG
  446. 9350      CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
  447. 9360      DEF SEG
  448. 9370     IF ERRCODE% <> 0 THEN PRINT "Error setting spool flags.":STOP
  449. 9400      '
  450. 9410      ' send the data to a spool file
  451. 9420      '
  452. 9430     PRINT "Enter a print line to print on the server in table entry "DRIVE%
  453. 9431     INPUT TEMPDATA$
  454. 9435     PRINT
  455. 9440      HIPACLEN$ = CHR$(0)
  456. 9450      LOPACLEN$ = CHR$(1 + LEN(TEMPDATA$))
  457. 9460      FUNC$ = CHR$(0)
  458. 9470      ERRCODE% = 0
  459. 9480      REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + TEMPDATA$
  460. 9490      REPLY$ = CHR$(0) + CHR$(0)
  461. 9500      DEF SEG = LIBSEG
  462. 9510      CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
  463. 9520      DEF SEG
  464. 9530      IF ERRCODE% <> 0 THEN PRINT "Unable to write to capture file.": STOP
  465. 9600     '
  466. 9610     ' close and queue the file
  467. 9620     '
  468. 9630     HIPACLEN$ = CHR$(0)
  469. 9640     LOPACLEN$ = CHR$(2)
  470. 9650     FUNC$ = CHR$(1)
  471. 9660     ABORTFLAG$ = CHR$(0)
  472. 9670     ERRCODE% = 0
  473. 9680     REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + ABORTFLAG$
  474. 9690     REPLY$ = CHR$(0) + CHR$(0)
  475. 9700     DEF SEG = LIBSEG
  476. 9710     CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
  477. 9720     DEF SEG
  478. 9730     IF ERRCODE% <> 0 THEN PRINT "Failed to close and queue the file."
  479. 9800 ' restore the original preferred file server
  480. 9810     MODE% = 0 'mode to set the preferred file server
  481. 9820     DEF SEG = LIBSEG
  482. 9830     CALL SETSERV(MODE%,CURRENTSERVER%,LASTSERVER%)
  483. 9840     DEF SEG
  484. 9999     RETURN
  485.  
  486.  
  487.  
  488.  
  489. 10000 '
  490. 10010 ' routines for network use
  491. 10020 '
  492. 10100 '  This file contains the routine names and
  493. 10101 '  offsets for the BASNET library
  494. 10110 XTNDOPN  =   0   'xtndopn(Mode%, Filename$, Handle%, ErrCode%)
  495. 10111 SETATTR  =   3   'setattr(Func%, Filename$, Attribute%, ErrCode%)
  496. 10112 EOJSTAT  =   6   'eojstat(Flag%)
  497. 10113 PRLH.LOG =   9   'PRLH.Log(FileHandle%,HiByteOffset%,LoByteOffset%,HiLockLen%,LoLockLen%,Flags%,TimeOut%,ErrCode%)
  498. 10114 PRLH.REL =  12   'PRLH.Rel(FileHandle%,HiByteOffset%,LoByteOffset%,ErrCode%)
  499. 10115 PRLH.CLR =  15   'PRLH.Clr(FileHandle%,HiByteOffset%,LoByteOffset%,Errcode%)
  500. 10116 PRLF.LOG =  18   'PRLF.Log(fcb%,HiByteOffset%,LoByteOffset%,HiLockLen%,LoLockLen%,Flags%,TimeOut%,ErrCode%)
  501. 10117 PRLF.REL =  21   'PRLF.Rel(fcb%,HiByteOffset%,LoByteOffset%,ErrCode%)
  502. 10118 PRLF.CLR =  24   'PRLF.Clr(fcb%,HiByteOffset%,LoByteOffset%,ErrCode%)
  503. 10119 PRLS.LCK =  27   'PRLS.Lck(Flags%,TimeOut%,ErrCode%)
  504. 10120 PRLS.REL =  30   'PRLS.Rel(ErrCode%)
  505. 10121 PRLS.CLR =  33   'PRLS.Clr(ErrCode%)
  506. 10122 OPENSEM  =  36   'OpenSem(Sema4$,SemaValu%,HiHandle%,LoHandle%,OpenCnt%,RetCode%)
  507. 10123 EXAMSEM  =  39   'ExamSem(HiHandle%,LoHandle%,SemaValu%,OpenCnt%,RetCode%)
  508. 10124 WAITSEM  =  42   'WaitSem(HiHandle%,LoHandle%,TimeOut%,RetCode%)
  509. 10125 SIGSEM   =  45   'SigSem(HiHandle%,LoHandle%,RetCode%)
  510. 10126 CLOSSEM  =  48   'ClosSem(HiHandle%,LoHandle%,RetCode%)
  511. 10127 SETLCK   =  51   'setlck(Func%,Mode%)
  512. 10128 BAKOUTS  =  54   'Bakouts(Func%,RetCode%)
  513. 10129 BTRANS   =  57   'btran(ReturnCode%, Mode%)
  514. 10130 ETRANS   =  60   'etrans(ReturnCode%)
  515. 10131 EXCLOG   =  63   'exclog(ReturnCode%, FcbAddr)
  516. 10132 EXCLCKS  =  66   'exclcks(ReturnCode%, Mode%)
  517. 10133 EXCULKF  =  69   'exculkf(ReturnCode%, FcbAddr)
  518. 10134 EXCULKS  =  72   'exculks(ReturnCode%)
  519. 10135 EXCCLRF  =  75   'excclrf(ReturnCode%, FcbAddr)
  520. 10136 EXCCLRS  =  78   'excclrs(ReturnCode%)
  521. 10137 RECLOG   =  81   'reclog(ReturnCode%, String$)
  522. 10138 RECLCK   =  84   'reclck(ReturnCode%, Mode%)
  523. 10139 RECULK   =  87   'reculk(ReturnCode%, Semaphore$)
  524. 10140 RECULKS  =  90   'reculks(ReturnCode%)
  525. 10141 RECCLR   =  93   'recclr(ReturnCode%, Semaphore$)
  526. 10142 RECCLRS  =  96   'recclrs(ReturnCode%)
  527. 10143 EOJ      =  99   'eoj(ReturnCode%)
  528. 10144 SYSOUT   = 102   'sysout(ReturnCode%)
  529. 10145 ALLOCR   = 105   'allocr(ReturnCode%, Resource%)
  530. 10146 DALLOCR  = 108   'dallocr(ReturnCode%, Resource%)
  531. 10147 VOLSTAT  = 111   'volstat(volume%, reply$)
  532. 10148 LOCDRV   = 114   'locdrv(NumDisks%)
  533. 10149 WSID     = 117   'wsid(ThisStationNum%)
  534. 10150 ERRMODE  = 120   'errmode(mode%)
  535. 10151 BCSMODE  = 123   'bcsmode(mode%)
  536. 10152 CTLSPL   = 126   'ctlspl(mode%)
  537. 10153 SPLREQ   = 129   'splreq(ErrCode%, RequestBlock$, Reply$)
  538. 10154 PIPREQ   = 132   'pipreq(ErrCode%, RequestBlock$, Reply$)
  539. 10155 DPATH    = 135   'dpath(ReturnCode%, RequestBlock$, Reply$)
  540. 10156 SYSLOG   = 138   'syslog(ReturnCode%, RequestBlock$, Reply$)
  541. 10157 FATTR    = 141   'fattr(ReturnCode%, FcbAddr, Attribute%)
  542. 10158 UPDFCB   = 144   'updfcb(RetCode%,FcbAddr)
  543. 10159 CPYFILE  = 147   'cpyfile(ReturnCode%, FcbSource, FcbDest, CountLow, CountHigh)
  544. 10160 NETTOD   = 150   'nettod(time$)
  545. 10161 CLSMODE  = 153   'clsmode(mode%)
  546. 10162 DRVMAP   = 156   'drvmap(ReturnFlags%, drive%)
  547. 10163 RETSHL   = 159   'retshl(RetCode%, Mode%)
  548. 10164 ASCLOG   = 162   'asclog(RetCode%, Asciiz$)
  549. 10165 ASCULKF  = 165   'asculkf(RetCode%, Asciiz$)
  550. 10166 ASCCLRF  = 168   'ascclrf(RetCode%, Asciiz$)
  551. 10167 GETPSN   = 171   'Get_PSN(StationNo%)
  552. 10168 GETSTA   = 174   'Get_STA(Mode%,Segment%,Offset%)
  553. 10169 SETSERV  = 177   'SetServ(Mode%,NewServ%,CurrServ%)
  554. 10170 MODSERV  = 180   'ModServ(Mode%,NewServ%,RetCode%)
  555. 10171 GETDRV   = 183   'GetDrv(Drive%)
  556. 10172 SETSPL   = 186   'setspl(Request$,mode%)
  557. 10173 LOGLCK   = 189   'loglck(
  558. 10200     '
  559. 10210     ' Assign the segment address for the library to the variable LibSeg
  560. 10220     DEF SEG = 0
  561. 10230     SUBOFF = PEEK(&H4F0)+(256*PEEK(&H4F1))
  562. 10240     SUBSEG = PEEK(&H4F2)+(256*PEEK(&H4F3))
  563. 10250     LIBSEG = SUBSEG
  564. 10400     '
  565. 10410     ' set the error mode so its more informative
  566. 10420     DEF SEG = LIBSEG
  567. 10430     NEWMODE% = 1
  568. 10440     CALL ERRMODE(NEWMODE%)
  569. 10450     DEF SEG
  570. 10999 RETURN
  571.