File: USRS.LS of Disk: V50/Source/Source-Listing-RALF-1
(Source file text)
RALF V50A 8-APR-92 PAGE 1 / / SUBROUTINE USR (UNIT, NAME, FUNCT, STATUS) (FRTS) / / SUBROUTINE USR3 (UNIT, NAME, FUNCT, STATUS) ASSEMBLE WITH /3 (FRUN) / / THIS ROUTINE ALLOWS RUN-TIME DECLARATION OF FILES / IN D.E.C. FORTRAN IV FOR THE PDP-8. THE HANDLER / AND BUFFER ALLOCATION IS FULLY DYNAMICAL, I.E. / THE FUNCTIONS 'RELEASE' AND 'CLOSE' RECOVER / ALL SPACE USED FOR HANDLER AND BUFFER. / / DESCRIPTION OF PARAMETERS: / / UNIT - LOGICAL UNIT NUMBER / NUMBERS 1 THRU 9 ARE ALLOWED. / NAME - DEV:FILE.EX / STORED IN FORMAT 3A6 (6A3 FOR FRUN) / DEVICE ASSUMED TO BE DSK: IF NOT / EXPLICITLY STATED. THIS PARAMETER MAY / ALSO BE A HOLLERITH LITERAL. / SPACES ARE IGNORED IN THIS FIELD. / @ (NULL IN FRUN) IS END OF NAME / FUNCT - FUNCTION: 1 - RELEASE UNIT / 2 - OPEN FILE FOR INPUT / 3 - OPEN FILE FOR OUTPUT / 4 - CLOSE OUTPUT FILE / THE OUTPUT FILE NAME GIVEN FOR A <CLOSE> / MUST AGREE WITH THE CORRESPONDING <OPEN> / FILE NAME FOR THAT UNIT. CLOSING A FILE / WITH 0 BLOCKS OR AN INPUT (FUNCT=2) FILE WILL / DELETE THAT FILENAME FROM THE DIRECTORY. / STATUS - A POSITIVE CALLING VALUE INHIBITS FORMS CONTROL / A NEGATIVE CALLING VALUE ENABLES FORMS CONTROL / ON THE SPECIFIED UNIT. (ABS(STATUS)-1) IS / A DECLARATION OF THE MAXIMUM FILE LENGTH. / - RETURNS / IF NO ERRORS FILE LENGTH IF FUNCT=2 / MAX FILE LENGTH IF FUNCT=3 / 0 IF FUNCT=1 OR =4 / IF ERROR THE STATUS WILL BE A NEGATIVE / ERROR NUMBER / -1 - ILLEGAL FUNCTION CODE FOR UNIT / -2 - ILLEGAL UNIT NUMBER / -3 - ILLEGAL FILE NAME / -4 - MEMORY OVERFLOW / -5 - DEVICE DOES NOT EXIST / -6 - FILE NOT FOUND OR DEVICE FULL / -7 - SYS: WRITE-LOCKED / -10 - I-O ERROR RALF V50A 8-APR-92 PAGE 2 /NOTES: / 1 - UNIT NUMBERS 1-4 ARE NOT STRONGLY RECOMMENDED / BECAUSE THE INTERNAL HANDLERS CANNOT BE RE- / CLAIMED. OTHERWISE THEY ARE EQUIVALENT TO 5-9. / 2 - THE RELEASE FUNCTION (WHICH ALWAYS SUCCEEDS) / ALLOWS DELETING A UNIT EVEN IF NO FREE MEMORY / IS AVAILABLE. PRINCIPAL USE WILL BE FOR RE- / OPENING A UNIT FOR INPUT: / OPEN INPUT 1...PROG...EOF...RELEASE...OPEN INPUT 2 / 3 - STANDARD PROCEDURE FOR DELETING A FILE IS: / RELEASE...OPEN INPUT...CLOSE / 4 - U S R CONSIST OF 2 PARTS: / USRS (FPP CODE) (1000 WORDS) (CAN BE IN OVERLAY) / USR8 (PDP8 CODE) (1000 WORDS) (MUST BE IN MAIN) / 5 - THE FATAL USER ERRORS CAN BE MADE NON-FATAL / FOR PROGRAM DEVELOPMENT BY USING /E IN FRTS. / 6 - A SLIGHTLY MODIFIED VERSION OF FRTS HAS TO BE / USED. IT CAN BE RECOGNIZED BY THE SINGLE LETTER / U IN IT'S VERSION NUMBER. (FRTS V5AXYZ U) <-- RALF V50A 8-APR-92 PAGE 3 / THIS PROGRAM REQUIRES THAT THE LOCATIONS: HKEY=2761 DSRN=4244 HPLACE=5200 MAXCOR=121 BOTHAN=122 TOPBUF=124 / BE CONSISTENT WITH THE VERSION OF / FIV BEING USED. EXTERN CGET EXTERN CGET3 /FOR FRUN EXTERN CPUT EXTERN USRS8 EXTERN #ENDF #DEV=USRS8+637 #FILE=USRS8+744 #LDSRN=USRS8+167 #LHNDR=USRS8+163 #LBUFF=USRS8+165 #USRLC=USRS8+171 #USRLD=USRS8+173 #CLNLC=USRS8+175 #CLBLC=USRS8+352 #SB=USRS8+34 #FUNCT=USRS8+160 #CLEN=USRS8+350 #SB2=USRS8+701 #FD1=USRS8+15 #FD2=USRS8+30 #FI1=USRS8+31 #FUSR=USRS8+13 #USRDF=USRS8+604 #UEXIT=USRS8+722 #USCLN=USRS8+147 #CBFIF=USRS8+330 RALF V50A 8-APR-92 PAGE 4 IFNSW 3 < SECT USR > IFSW 3 < SECT USR3 > 00000 1030 JA #ST 00001 0162 #XR, ORG .+10 /THE 8 XR REGISTERS USED AS: /0: PSEUDO ISN /1: INCREMENTING /5: FORMS CONTROL /6: HCW OF THIS UNIT /7: PERIOD SWITCH 00012 2523 TEXT +USR + /FOR TRACEBACK 00013 2240 00014 4000 00015 1100 #RET, SETX #XR /RESET TO MY XR,BASE WHEN 00016 0002 00017 1110 SETB #BASE /RETURNING FROM CALLED SUBROUTINE 00020 0023 00021 1030 JA .+3 /JUMP TO 'JSR' GENERATED 'JA CALL+2' 00022 0024 #BASE, ORG .+3 /GETS ABOVE 'JA' IN D.P. FORMAT BDSRN, ORG .+3 /SECOND LOC FREE FOR USE BY SUBROUTINES UNIT, ORG .+3 /MY ARGUMENTS. WELL ... NOT ALL FUNCT, ORG .+3 ERROR, ORG .+3 /FUNCT,ERROR STAY AS ADDRESSES 00042 0000 X, F 0.0 00043 0000 00044 0000 00045 0000 I, F 0.0 00046 0000 00047 0000 00050 0000 N, F 0.0 00051 0000 00052 0000 ORG #BASE+30 /STANDARD LOCATION 00053 0040 FNOP 00054 1030 JA #RET /CALLED SUBROUTINE LOADS THIS RETURN 00055 0015 00056 0040 FNOP 00057 0000 #GOBAK, 0;0 /I STORE THE ABOVE RETURN HERE 00060 0000 00061 0002 #RTN, FCLA 00062 1030 JA #GOBAK /RETURN TO LOWER LEVEL XR,BASE RESET 00063 0057 RALF V50A 8-APR-92 PAGE 5 00064 0000 ENTLEN, F 0. /FILE LENGTH FOR ENTER 00065 0000 00066 0000 00067 0423 DSK, TEXT +DSK@@@+ 00070 1300 00071 0000 00072 0006 COLON, F 58. /OCTAL 72 00073 3500 00074 0000 00075 0006 PERIOD, F 46. /OCTAL 56 00076 2700 00077 0000 00100 0001 F1, F 1. 00101 2000 00102 0000 00103 0003 F4, F 4. 00104 2000 00105 0000 00106 0003 F6, F 6. 00107 3000 00110 0000 00111 0004 F8, F 8. 00112 2000 00113 0000 00114 0004 F9, F 9. 00115 2200 00116 0000 00117 0005 F16, F 16. 00120 2000 00121 0000 00122 0005 F26, F 26. 00123 3200 00124 0000 00125 0006 F32, F 32. 00126 2000 00127 0000 00130 0015 F4096, F 4096. 00131 2000 00132 0000 RALF V50A 8-APR-92 PAGE 6 00133 0027 D00001, 27;0;1 00134 0000 00135 0001 00136 0027 D00200, 27;0;200 00137 0000 00140 0200 00141 0027 D00400, 27;0;400 00142 0000 00143 0400 00144 0027 D17400, 27;1;7400 00145 0001 00146 7400 00147 0027 DCDF, 27;0;CDF 00150 0000 00151 6201 00152 0027 DSBASE, 27;ADDR DSRN 00153 0000' 00154 4244 00155 0027 DSETXI, 27;SETX 0 /DUMMY SETX 00156 1100' 00157 0000 00160 0000 ADUSR8, ADDR USRS8 00161 0000 RALF V50A 8-APR-92 PAGE 7 BASE #BASE 00162 0006 #ST, STARTD /USUAL 'SETUP' ROUTINE 00163 0210 0210 /LOAD LOWER LEVEL BASE+30 00164 6400 FSTA #GOBAK,0 /AND STORE THAT 'JA #RET' 00165 0057 00166 0200 0200 /LOAD LL 'JA ARG' 00167 1100 SETX #XR 00170 0002 00171 1110 SETB #BASE /NOW WE ARE BORN! 00172 0023 00173 0101 LDX 0,1 00174 0000 00175 6200 FSTA #BASE /DON'T FORGET THIS GETS CLOBBERED /IF WE CALL ANOTHER SUBROUTINE 00176 0710 FLDA% #BASE,1+ /PREINC XR 1 TO SKIP 'JA' AFTER CALL 00177 6202 FSTA UNIT 00200 0710 FLDA% #BASE,1+ 00201 6400 FSTA# NAME 00202 0475 00203 0710 FLDA% #BASE,1+ 00204 6203 FSTA FUNCT 00205 0710 FLDA% #BASE,1+ 00206 6204 FSTA ERROR 00207 0005 STARTF 00210 0100 LDX 2,0 /FOR ERROR #2 00211 0002 00212 0105 LDX 0,5 /SET NO FORMS CONTROL 00213 0000 00214 0604 FLDA% ERROR /GET FORMS INDICATION 00215 1010 JGE FORM /GE 0 IS NO FORMS 00216 0222 00217 0105 LDX 2,5 /SET CORRECT VALUE FOR FORMS CONTROL 00220 0002 00221 0003 FNEG /FILE LENGTH IS POSITIVE 00222 1000 FORM, JEQ FZERO 00223 0225 00224 2217 FSUB F1 /FILE LENGTH IS ABS VALUE -1 00225 4224 FZERO, FMUL F16 /BUMP OVER DEV # 00226 6213 FSTA ENTLEN /KEEP IT FOR ENTER 00227 2227 FSUB F4096 /TOO BIG ? 00230 1010 JGE ERRARG /YES, BIGGER THAN 255 BLOCKS 00231 0731 00232 0602 FLDA% UNIT 00233 6202 FSTA UNIT 00234 2223 FSUB F9 /CHECK RANGE 00235 1060 JGT ERRARG 00236 0731 00237 0202 FLDA UNIT 00240 2217 FSUB F1 /MAKE UNIT # START FROM 0 00241 1050 JLT ERRARG 00242 0731 00243 4223 FMUL F9 /MAKE DSRN SLOT 00244 0010 ALN 0 00245 0006 STARTD 00246 1235 FADD DSBASE RALF V50A 8-APR-92 PAGE 7-1 00247 6201 FSTA BDSRN /PUT IN BASE PAGE AND 00250 6400 FSTA# #LDSRN /STORE FAR AWAY 00251 0167 00252 0005 STARTF 00253 0603 FLDA% FUNCT 00254 2217 FSUB F1 /RELEASE DOES NOT USE USRUSR 00255 0006 STARTD 00256 1000 JEQ NOMEM /SO WE CAN RELEASE WITH 0 FREE PAGES 00257 0304 RALF V50A 8-APR-92 PAGE 8 / INITIALIZE PROGRAM / 00260 0100 LDX 4,0 /FOR ERROR #4 00261 0004 00262 0400' FLDA# BOTHAN 00263 0122 00264 6400 FSTA# #LHNDR 00265 0163 00266 0400' FLDA# TOPBUF 00267 0124 00270 6400 FSTA# #LBUFF 00271 0165 00272 2233 FSUB D17400 /IF PROG ENDS AT 17400 00273 1000 JEQ SPCLOC /WE MUST BE CAREFUL 00274 0310 00275 0400 FLDA# #LHNDR /FIND OUT IF WE HAVE 00276 0163 00277 2400 FSUB# #LBUFF /ENOUGH SPACE TO COPY 00300 0165 00301 2232 FSUB D00400 /'USRUSR' INTO (LENGTH 400) 00302 1050 JLT ERRARG /FATAL USER ERROR 00303 0731 00304 0400 NOMEM, FLDA# #LBUFF /OK, PUT 'USRUSR' AT TOP 00305 0165 00306 1030 JA OKMEM /OF PROGRAM AND BUFFERS. 00307 0321 00310 0400 SPCLOC, FLDA# #LHNDR /IF END OF PROG AT 17400 00311 0163 00312 2233 FSUB D17400 /WE MUST LOAD 'USRUSR' AT 00313 2232 FSUB D00400 /20000. CHECK IF ROOM 00314 2232 FSUB D00400 /UP TOO 20400 00315 1050 JLT ERRARG /NO! TOO BAD - ERROR 00316 0731 00317 0233 FLDA D17400 /OK, SET LOC TO 20000 00320 1232 FADD D00400 /THIS WAS ALL DONE IN D.P. MODE 00321 6400 OKMEM, FSTA# #USRLC /HOLDS LOC TO LOAD 'USRUSR' 00322 0171 00323 2400 FSUB# #USRLD /RELOCATION DISTANCE 00324 0173 00325 1400 FADD# FILADR /RELOCATED ADDRESS OF '#FILE' 00326 0562 00327 1100 SETX #SB2 00330 0701 00331 0020 ATX 0 /SET ADDRESS OF '#FILE' RALF V50A 8-APR-92 PAGE 9 00332 1100 SETX #USRLC 00333 0171 00334 1120 JSA MAKCDF 00335 0740 00336 1100 SETX #FD1 00337 0015 00340 0020 ATX 0 /SET LOCATION FOR 'USRUSR' TRANSFER 00341 1100 SETX #USRDF 00342 0604 00343 0020 ATX 0 /ALSO IN 'USRUSR' ITSELF 00344 1230 FADD D00001 /MAKE IT CIF USRUSR 00345 1100 SETX #FI1 00346 0031 00347 0020 ATX 0 /FOR 'JMS% USRUSR' 00350 1100 SETX #USRLD /MAKE CDF ORIGINAL 'USRUSR' 00351 0173 00352 1120 JSA MAKCDF 00353 0740 00354 1100 SETX #FUSR 00355 0013 00356 0020 ATX 0 /FOR COPYING 'USRUSR' 00357 1100 SETX ADUSR8 /USE TRAP USRS8 00360 0160 00361 1120 JSA MAKCDF 00362 0740 00363 1100 SETX #FD2 00364 0030 00365 0020 ATX 0 /SET CURRENT FIELD IN USRS8 00366 1230 FADD D00001 /MAKE CIF CDF 00367 1230 FADD D00001 00370 1100 SETX #UEXIT 00371 0722 00372 0020 ATX 0 /FOR USRUSR RETURN TO USRS8 00373 1100 SETX #CLNLC 00374 0175 00375 1120 JSA MAKCDF 00376 0740 00377 1230 FADD D00001 /MAKE CIF 00400 1100 SETX #USCLN 00401 0147 00402 0020 ATX 0 /FOR JMS% #CLNLC+1 00403 1100 SETX #CLBLC 00404 0352 00405 1120 JSA MAKCDF 00406 0740 00407 1230 FADD D00001 /MAKE CIF 00410 1100 SETX #CBFIF 00411 0330 00412 0020 ATX 0 /FOR JMS% #CLBLC+1 RALF V50A 8-APR-92 PAGE 10 00413 1120 JSA SETDS 00414 0765 00415 0030 XTA 0 /GET HANDLER ENTRY POINT 00416 1100 SETX #XR 00417 0002 00420 0026 ATX 6 /KEEP FOR LATER 00421 0005 STARTF 00422 0603 FLDA% FUNCT /RELEASE IS ALWAYS ALLOWED 00423 2217 FSUB F1 00424 1000 JEQ OPINOT /OK: RELEASE 00425 0626 00426 0100 LDX 1,0 /FOR ERROR #1 00427 0001 00430 0036 XTA 6 /GET HCW BACK 00431 1000 JEQ FREE 00432 0441 00433 0603 FLDA% FUNCT 00434 2220 FSUB F4 00435 1000 JEQ GODFUN /OK: CLOSE 00436 0451 00437 1030 JA ERRARG /NO: BAD FUNCTION 00440 0731 00441 0603 FREE, FLDA% FUNCT /IF SLOT FREE 00442 2217 FSUB F1 00443 2217 FSUB F1 00444 1000 JEQ GODFUN /OPEN INPUT IS OK 00445 0451 00446 2217 FSUB F1 00447 1040 JNE ERRARG /NO OPEN OUTPUT IS BAD 00450 0731 RALF V50A 8-APR-92 PAGE 11 / PUT DEV:FILE.EXT INTO CORRECT FORMAT FOR USR CALL / 00451 0107 GODFUN, LDX -1,7 /NO PERIODS YET 00452 7777 00453 0100 LDX 3,0 /FOR ERROR #3 00454 0003 00455 0214 FLDA DSK /INIT DEV: TO DSK: 00456 6400 FSTA# #DEV 00457 0637 00460 0002 FCLA /INITIALIZE SOME VARIABLES... 00461 6400 FSTA# #FILE 00462 0744 00463 6400 FSTA# #FILE+3 00464 0747 00465 6207 FSTA N 00466 6206 FSTA I / DO I=1,18 00467 1030 JA SKIP 00470 0571 GETLUP, 00471 1130 IFNSW 3 < JSR CGET / CALL CGET (NAME, I, X) > 00472 0000 IFSW 3 < JSR CGET3 / CALL CGET3 (NAME, I, X) > 00473 1030 JA .+10 00474 0503 00475 1030 NAME, JA . /**RA FORMAL PARAM ADDRESS 00476 0475 00477 1030 JA I 00500 0045 00501 1030 JA X 00502 0042 00503 0205 FLDA X / IF (X.NE.COLON) GO TO NOCOL 00504 1000 JEQ EOIN /IGNORE NULLS 00505 0605 00506 2215 FSUB COLON 00507 1040 JNE NOCOL 00510 0526 00511 0206 FLDA I /COLON MUST BE COLUMN 5 OR BEFORE 00512 2221 FSUB F6 00513 1010 JGE ERRARG 00514 0731 00515 0400 FLDA# #FILE /COLON DEFINES DEVICE NAME 00516 0744 00517 6400 FSTA# #DEV 00520 0637 00521 0002 FCLA 00522 6400 FSTA# #FILE 00523 0744 00524 1030 JA SKIP 00525 0571 RALF V50A 8-APR-92 PAGE 12 00526 0205 NOCOL, FLDA X / IF (X.NE.PERIOD) GO TO NOPER 00527 2216 FSUB PERIOD 00530 1040 JNE NOPER 00531 0537 00532 2170 JXN ERRARG,7+ /ONLY ONE PERIOD ALLOWED 00533 0731 00534 0221 FLDA F6 00535 1030 JA SKIP /POSITION FOR EXTENSION 00536 0571 00537 0205 NOPER, FLDA X IFNSW 3 < 00540 2225 FSUB F26 00541 1020 JLE GODCHR /ALPHAS 00542 0556 00543 2221 FSUB F6 00544 1050 JLT ERRARG /[ TO _ > 00545 0731 IFSW 3 < FSUB F32 JLT ERRARG /CONTROL CODES > 00546 1000 JEQ IGNOR /SKIP SPACES 00547 0576 00550 2224 FSUB F16 00551 1050 JLT ERRARG /! TO / 00552 0731 00553 2223 FSUB F9 IFNSW 3 < 00554 1060 JGT ERRARG /: TO ? 00555 0731 /DIGITS > IFSW 3 < JLE GODCHR /DIGITS FSUB F6 JLE ERRARG /: TO ? FSUB F1 JEQ EOIN /@ IS NAME TERMINATOR FSUB F26 JGT ERRARG /[ TO END (LOWER CASE) /ALPHAS > 00556 1130 GODCHR, JSR CPUT / CALL CPUT (FILE, N, X) 00557 0000 00560 1030 JA .+10 00561 0570 00562 1030 FILADR, JA #FILE 00563 0744 00564 1030 JA N 00565 0050 00566 1030 JA X 00567 0042 00570 0207 FLDA N / N=N+1 00571 1217 SKIP, FADD F1 00572 6207 MORE, FSTA N 00573 2223 FSUB F9 /MORE THAN 8 CHARS? 00574 1060 JGT ERRARG /YES, PROTECT USRUSR RALF V50A 8-APR-92 PAGE 12-1 00575 0731 00576 0206 IGNOR, FLDA I / CONTINUE 00577 1217 FADD F1 00600 6206 FSTA I 00601 2223 FSUB F9 00602 2223 FSUB F9 00603 1020 JLE GETLUP 00604 0471 RALF V50A 8-APR-92 PAGE 13 00605 0603 EOIN, FLDA% FUNCT 00606 2220 FSUB F4 00607 1000 JEQ XCLOSE /IT IS CLOSE 00610 0614 00611 0213 FLDA ENTLEN /GET INDICATED FILE-LENGTH 00612 1030 JA BYPASS /STORE IN '#SB' 00613 0620 00614 0006 XCLOSE, STARTD /USER PROGRAM HAS ENDFILED 00615 1120 JSA SETDS 00616 0765 00617 0037 XTA 7 /OUR FILE LENGTH 00620 1100 BYPASS, SETX #SB 00621 0034 00622 0020 ATX 0 /TO '#SB' FOR CLOSE 00623 0005 STARTF 00624 1100 SETX #XR 00625 0002 / START OF RELEASE 00626 0035 OPINOT, XTA 5 /GET FORMS 00627 1100 SETX #FUNCT /USR XR TO PASS PARAMETERS 00630 0160 00631 0022 ATX 2 /TO #FORMS IN USRS8 00632 0603 FLDA% FUNCT 00633 0020 ATX 0 00634 4000 TRAP4 USRS8 /TRAP TO THE USR CALLING ROUTINE 00635 0000 00636 0031 XTA 1 /GET ERRNO AND RETURN IT 00637 1100 SETX #XR 00640 0002 00641 1040 JNE ERARUS /ERROR: LEAVE CORE INTACT 00642 0727 00643 0603 FLDA% FUNCT 00644 2220 FSUB F4 /CLOSE IS SPECIAL 00645 1000 JEQ ENDCLS 00646 0675 00647 0603 FLDA% FUNCT 00650 2217 FSUB F1 00651 1000 JEQ ENDCLS /RELEASE LIKE CLOSE 00652 0675 00653 0002 FCLA /FOR HW FPP! 00654 0006 STARTD 00655 0400 FLDA# #LHNDR /GET MODIFIED TOP-OF-MEM 00656 0163 00657 2400' FSUB# TOPBUF /OLD TOP-OF-BUFFERS 00660 0124 00661 2232 FSUB D00400 /NEED 400 FOR BUFFER 00662 1050 JLT OVRFLW /NO ROOM! 00663 0725 00664 0400 FLDA# #LHNDR 00665 0163 00666 6400' FSTA# BOTHAN /SET NEW BOTTOM OF HANDLRES 00667 0122 00670 0232 FLDA D00400 00671 5400' FADDM# TOPBUF /SET NEW TOP-OF-BUFFERS 00672 0124 RALF V50A 8-APR-92 PAGE 13-1 00673 1030 JA RETURN 00674 0714 RALF V50A 8-APR-92 PAGE 14 00675 1120 ENDCLS, JSA WIPE /WIPE-OUT UNIT SLOT 00676 0752 00677 0006 STARTD 00700 1100 SETX #CLEN 00701 0350 00702 0030 XTA 0 /GET SIZE OF DELETED HANDLER 00703 5400' FADDM# BOTHAN /GAINED SOME SPACE 00704 0122 00705 0031 XTA 1 /GET SIZE OF DELETED BUFFER 00706 5400' FADDM# TOPBUF /AND SOME MORE 00707 0124 00710 0005 STARTF 00711 0002 FCLA /RETURN WITH 0 STATUS 00712 1030 JA OK 00713 0734 00714 0005 RETURN, STARTF 00715 1100 SETX #SB 00716 0034 00717 0031 XTA 1 / GET FILE LENGTH (-2047 TO 2048) 00720 1010 JGE OK 00721 0734 00722 1227 FADD F4096 / NEG MEANS GT 2048 00723 1030 JA OK 00724 0734 00725 1120 OVRFLW, JSA WIPE /NOBODY KNOWS THE TROUBLE I HAVE 00726 0752 00727 1220 ERARUS, FADD F4 /BACK FROM USRUSR ERROR 00730 0020 ATX 0 /ERRORS (4)5-10 00731 0005 ERRARG, STARTF 00732 0030 XTA 0 00733 0003 FNEG /NEGATIVE ERROR STATUS 00734 0004 OK, FNORM 00735 6604 FSTA% ERROR 00736 1030 JA #RTN 00737 0061 RALF V50A 8-APR-92 PAGE 15 00740 1030 MAKCDF, JA . /ENTER IN D-MODE 00741 0740 00742 0005 STARTF 00743 0030 XTA 0 /GET FIELD 00744 4222 FMUL F8 /PUT IT INTO BITS 6-8 00745 0010 ALN 0 /CHANGE TO D-FORMAT 00746 0006 STARTD 00747 1234 FADD DCDF /MAKE IT CDF FIELD 00750 1030 JA MAKCDF 00751 0740 00752 1030 WIPE, JA . /WIPE OUT SLOT 00753 0752 00754 0005 STARTF 00755 0002 FCLA 00756 0101 LDX 0,1 00757 0000 00760 6611 FSTA% BDSRN,1 00761 6711 FSTA% BDSRN,1+ 00762 6711 FSTA% BDSRN,1+ 00763 1030 JA WIPE /THIS TIME I LIKE LENGTH 9 00764 0752 00765 1030 SETDS, JA . /ENTER IN D-MODE 00766 0765 00767 0201 FLDA BDSRN /GET SLOT AGAIN 00770 1236 FADD DSETXI /INITIALIZE SETX INSTRUCTION 00771 6400 FSTA# .+2 00772 0773 00773 1100' SETX DSRN /**RA MODIFIED BY RALF 00774 4244 00775 1030 JA SETDS 00776 0765 RALF V50A 8-APR-92 PAGE 15-1 NO ERRORS 96 SYMBOLS, 10 ABS REFS # C 00000 #BASE 00023 #CBFIF 00330 #CLBLC 00352 #CLEN 00350 #CLNLC 00175 #DEV 00637 #ENDF X 00000 #FD1 00015 #FD2 00030 #FILE 00744 #FI1 00031 #FUNCT 00160 #FUSR 00013 #GOBAK 00057 #LBUFF 00165 #LDSRN 00167 #LHNDR 00163 #MAIN S 00000 #RET 00015 #RTN 00061 #SB 00034 #SB2 00701 #ST 00162 #UEXIT 00722 #USCLN 00147 #USRDF 00604 #USRLC 00171 #USRLD 00173 #XR 00002 ADUSR8 00160 BDSRN 00026 BOTHAN 00122 BYPASS 00620 CGET X 00000 CGET3 X 00000 COLON 00072 CPUT X 00000 DCDF 00147 DSBASE 00152 DSETXI 00155 DSK 00067 DSRN 04244 D00001 00133 D00200 00136 D00400 00141 D17400 00144 ENDCLS 00675 ENTLEN 00064 EOIN 00605 ERARUS 00727 ERRARG 00731 ERROR 00037 FILADR 00562 FORM 00222 FREE 00441 FUNCT 00034 FZERO 00225 F1 00100 F16 00117 F26 00122 F32 00125 F4 00103 F4096 00130 F6 00106 F8 00111 F9 00114 GETLUP 00471 GODCHR 00556 GODFUN 00451 HKEY 02761 HPLACE 05200 I 00045 IGNOR 00576 MAKCDF 00740 MAXCOR 00121 MORE 00572 N 00050 NAME 00475 NOCOL 00526 NOMEM 00304 NOPER 00537 OK 00734 OKMEM 00321 OPINOT 00626 OVRFLW 00725 PERIOD 00075 RETURN 00714 SETDS 00765 SKIP 00571 SPCLOC 00310 TOPBUF 00124 UNIT 00031 USR S 00777 USRS8 X 00000 WIPE 00752 X 00042 XCLOSE 00614