DataMuseum.dk

Presents historical artifacts from the history of:

Ohio Scientific Inc.

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Ohio Scientific Inc.

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦26b023051⟧

    Length: 5104 (0x13f0)
    Notes: OS65UFile, OSU65U-BASIC
    Names: »REMOVE«

Derivation

└─⟦2f57871a3⟧ Bits:30009355 Ohio Scientific OS-OMS Nucleus, delvist oversat til dansk
    └─⟦this⟧ »REMOVE« 

BASIC

00001 PRINT"** PROGRAM NOT EXECUTABLE FROM THE CONSOLE **":RUN"DBMSYS","PASS"
00002 CLOSE:CLEAR:REM 1/79  RECORD DELETE & REPACK  (REMOVE)
00003 REM
00004 REM LINES 1-200 SET FLGS,POKES,VARIABLES,ETC.
00005 K0=0:K1=1:K2=2:K3=3:K4=4:K5=5:K6=6:K7=7:K8=8:K9=9:KW=10:KZ=32
00006 FORX=K1TOKZ:PRINT:NEXT:FLAG11:FLAG9:REM FLG11-SPACE SUPP FLG9-50,000
00007 DIML$(100),FL(100),FP(100),D$(100)
00010 REM PEEK FOR CURRENT DEVICE
00011 DV(K1)=PEEK(9832):IFDV(K1)>127THENDV(K1)=DV(K1)-128+K4
00012 DV$(K1)=CHR$(DV(K1)+65)
00020 PRINT:PRINT"OS-DMS RECORD DELETE & REPACK":PRINT"-----------------------------":PRINT
00197 REM
00198 REM *************** MASTER FILE VERIFICATION ***************
00199 REM
00200 INPUT"DEVICE MASTER FILE IS STORED ON ";DV$(K2):PRINT
00205 IF DV$(K2)="" THEN DV$(K2)=DV$(K1): GOTO 300
00210 IFLEN(DV$(K2))>K1THENPRINT:PRINT"WHAT!":GOTO200
00215 IFDV$(K2)<"A"ORDV$(K2)>"E"THENPRINT:PRINT"WHAT!":GOTO200
00297 REM
00298 REM *************** PICKUP FILENAME & PASSWORD ***************
00299 REM
00300 INPUT"MASTER FILE NAME,PASSWORD ";M$,P$:PRINT
00305 IFM$=""ORP$=""THENPRINT:PRINT"WHAT!":GOTO300
00310 IFLEN(M$)<K5THENM$=M$+" ":GOTO310
00315 IFLEN(M$)=K6ANDRIGHT$(M$,K1)="0"GOTO330
00320 IFLEN(M$)>=6THENPRINT:PRINT"IMPROPER FILENAME":GOTO300
00325 IFLEN(M$)<K6THENM$=M$+"0":REM XXXXX0
00330 IFP$="."ORP$="."THENP$="ANAN"
00335 IFLEN(P$)<>K4THENPRINT:PRINT"IMPROPER PASSWORD":GOTO300
00340 DEVDV$(K2):REM SELECT NEW DEVICE
00345 OPENM$,P$,K1:REM OPEN FILE
00350 PRINT:PRINT"PLEASE WAIT":PRINT
00397 REM
00398 REM *************** VERIFY FILE NAME IN HEADER ***************
00399 REM
00400 INDEX<K1>=K0:INPUT%K1,N$:IFN$=LEFT$(M$,K5)GOTO410
00405 ERR$="FILE HEADER MISMATCH":GOTO40000:REM ERROR HANDLER
00410 INDEX<K1>=K6:INPUT%K1,TY:REM VERIFY MASTER FILE TYPE
00415 IFTY<>KWTHENERR$="NOT A MASTER FILE TYPE":GOTO40000
00420 INDEX<K1>=K9:INPUT%K1,EODF:REM GET END OF DATA INDEX
00425 INDEX<K1>=20:INPUT%K1,BODF:REM GET START OF DATA INDEX
00430 REM CHK IF DATA EXIST IN FILE
00435 IFEODF<=BODFTHENERR$="FILE EMPTY":GOTO40000
00440 INDEX<K1>=31:INPUT%K1,RL:REM GET RECORD LENGTH
00445 INDEX<K1>=42:INPUT%K1,NR:REM GET # OF RECORDS
00450 REM DOUBLE CHK FOR DATA IN THE FILE
00455 IFNR<K1THENERR$="FILE EMPTY":GOTO40000
00460 REM EVERYTHING IN THE FILE SEEMS 'OK'
00465 REM GET FIELD NAMES,LENGTHS & OFFSETS
00470 REM L$(N)=NAME FL(N)=LENGHT FP(N)=OFFSET
00475 TT=K0:TF=K1:A1=480:INDEX<K1>=53:REM TT=OFFSET TF=# OF FIELDS
00480 INPUT%K1,L$(TF):INPUT%K1,FL(TF):FP(TF)=TT
00485 T=TT+FL(TF):IFINDEX(K1)<BODFTHENTF=TF+K1:GOTOA1
00490 IFINDEX(K1)>BODFTHENERR$="FILE HEADER ERROR":GOTO40000
00495 REM ALL FIELD NAMES,LENGHTS & OFFSETS ARE ENTERED & SET
00497 REM
00498 REM *************** INPUT DELETE SPECIFICATIONS ***************
00499 REM
00500 INPUT"DELETE BLANK RECORDS STARTING AT RECORD # ";A$:A=VAL(A$)
00505 IFA<>INT(A)THENPRINT:PRINT"WHAT!":GOTO500
00507 IF A>=1 GOTO 510
00508 A=1: PRINT: INPUT"WILL START WITH RECORD NUMBER ONE (OK) ";QA$
00509 IF LEFT$(QA$,1)="N" THEN PRINT: GOTO 500
00510 JZ=INT((EODF-BODF)/RL):IFA<=JZGOTO520
00515 PRINT"* LAST RECORD IN FILE IS RECORD #";JZ;"*":PRINT:GOTO500
00520 FORX=K1TOKZ:PRINT:NEXT:PRINT"PLEASE WAIT"
00525 IF LEN(S1$)<71 THEN S1$=S1$+"                    ": GOTO 525
00597 REM
00598 REM *************** DELETE & REPACK ROUTINE ***************
00599 REM
00600 EN=INT((EODF-BODF)/RL): WR=A-K1: RE=WR: REM READ/WRITE START
00610 FOR X=K1 TO TF: FL(X)=FL(X)-K1: NEXT: REM LEN NOW PRIMED
00620 TB=K0: A1=630: A3=700: A4=760: A6=720
00630 IF RE>=EN GOTO A6: REM AT END SO BYE BYE !
00640 INDEX<K1>=BODF+(RE*RL): INPUT %K1,D$(K1): REM GET 1ST FIELD
00650 IF D$(K1)="^P" THEN RE=RE+K1: TB=TB+K1: GOTO A1: REM KILL IT
00660 IF D$(K1)<>"0" AND RE=WR THEN RE=RE+K1: WR=WR+K1: GOTO A1
00670 INDEX<K1>=BODF+(RE*RL): B=K0: FOR X=K1 TO TF: INPUT %K1,D$(X)
00680 IF D$(X)<>"0" AND RE=WR THEN RE=RE+K1: WR=WR+K1: GOTO A1
00685 IF D$(X)<>"0" THEN B=B+K1: REM F NOT EMPTY
00690 NEXT: IF B>K0 GOTO A3: REM MOVE THIS RECORD
00695 RE=RE+K1: TB=TB+K1: GOTO A1: REM KILL THIS ONE
00700 INDEX<K1>=BODF+(WR*RL): FOR X=K1 TO TF
00710 PRINT %K1,RIGHT$(S1$+D$(X),FL(X)): NEXT: RE=RE+K1: WR=WR+K1: GOTO A1
00720 IF TB=K0 GOTO A4: REM IF NO BLANKS NOTHING TO DO
00730 EODF=EODF-(TB*RL): INDEX<K1>=EODF: FOR X=K1 TO TB
00740 FOR Y=K1 TO TF: PRINT %K1,RIGHT$(S1$,FL(Y)): NEXT: NEXT X
00750 INDEX<K1>=K9: PRINT %K1,EODF: REM UPDATE NEW EODF
00760 GOTO 51100: REM BYE BYE
00897 REM
00898 REM *************** ERROR HANDLER IN LINE 40,000 ON ***************
00899 REM
40000 REM ERROR EXPANSION GOES HERE
40010 PRINT:PRINTERR$:PRINT:CLOSE:GOTO51000:REM COMMON EXIT PATH
50000 REM LINE 50,000 ERROR HANDLER
50010 ER=PEEK(10226):EL=PEEK(11774)+PEEK(11775)*256
50015 REM CHK FOR 'NON-EXISTANT ENTRY ERROR'
50020 IFER=128THENERR$="INVALID FILENAME":GOTO51050
50025 REM CHK FOR 'END OF FILE HIT' ERROR
50030 IFER=132THENERR$="END OF FILE ERROR":GOTO51000
50035 REM CHK FOR ACCESS RIGHTS VIOLATION
50040 IFER=130THENERR$="ACCESS RIGHTS VIOLATION":GOTO51000
50045 REM MAYBE A SYSTEM ERROR I.E. CHANNEL NOT OPEN ERROR
50050 IFER=129THENERR$="CANNOT ACCESS FILE":GOTO51050
50055 REM OTHER ERRORS ARE HARD ERRORS
50060 ERR$="DISC ERROR CODE "+STR$(ER)+" IN LINE "+STR$(EL)
50065 REM PICKUP DISC ADDR. WHERE ERROR OCCURED
50070 EA=K0: FORI=K1TOK1STEP-K1:EA=EA*256+PEEK(9889+I):NEXT
50080 DV(K4)=PEEK(9832):IFDV(K4)>127THENDV(K4)=DV(K4)-128+K4
50090 PRINT"ERROR ON DEVICE "+CHR$(DV(K4)+65)+" AT DISC ADDRESS";EA
51000 REM ERROR MESSAGE PRINT CODE ENTRY AT '51000' CLOSES FILE
51020 CLOSE
51040 REM ENTRY ST '51050' DOES NOT CLOSE THE CHANNEL
51050 PRINT:PRINT:PRINT"*****  ERROR  *****":PRINT:PRINT
51051 XC=XC+1:IFXC<2GOTO51060
51052 PRINT"** CHECK TO SEE IF THE DISKETTE(S) ARE IN THE PROPER DRIVE **"
51060 PRINT ERR$: ERR$=""
51100 REM COMMON EXIT PATH
51101 IFER<1THENFORX=1TO32:PRINT:NEXT
51105 IFER<1THENPRINT"*** END OF DELETE & REPACK ***"
51106 PRINT:INPUT"ENTER A  C  TO CONTINUE ";QS$:FORX=1TO32:PRINT:NEXT
51110 DEVCHR$(DV(K1)+65):REM SELECT ORIGINAL DEVICE
51120 POKE2972,58:POKE2976,44:REM DISABLE :,& IN DATA FIELD
51130 FLAG12:REM DISABLE SPACE SUPP
51150 CLOSE:RUN"DBMSYS","PASS"

Full view