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

⟦450077a23⟧

    Length: 8176 (0x1ff0)
    Notes: OS65UFile, OSU65U-BASIC
    Names: »DBMDIR«

Derivation

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

BASIC

00001 PRINT"** PROGRAM NOT EXECUTABLE FROM CONSOLE **":RUN"DBMSYS","PASS
00002 CLOSE:CLEAR:REM 1/79  OS-DMS MODIFIED VERISION OF OS-65U DIR  (DBMDIR)
00005 POKE 2888,0: REM PERMIT <CR> ONLY IN RESPONSE TO INPUT STATEMENT
00010 REM OS-65U DIR (C) OSI 1978
00022 FOR I=1 TO 27:PRINT:NEXT I
00030 INPUT"\NSKES UDSKRIFT P] PRINTER (P) ELLER KONSOL (K)";KK$
00035 IF LEFT$(KK$,1)="P" GOTO 42
00040 DV = PEEK(11665): REM  OUTPUT DEVICE
00041 GOTO 51
00042 INPUT "HVILKEN PORT";DV
00051 DV(1)=PEEK(9832):IF DV(1)>127 THEN DV(1)=DV(1)-128+4
00052 DV$(1)=CHR$(DV(1)+65)
00053 PRINT: INPUT"INDTAST HVILKEN STATION";DV$(2)
00054 DV$(2)=LEFT$(DV$(2),1): IF DV$(2)="" THEN DV$(2)=DV$(1)
00055 IF DV$(2)=>"A" OR DV$(2)<="E" GOTO 60
00056 PRINT:PRINT"FORKERT !!!":PRINT:GOTO 53
00060 HS=72898560: REM HARD SIZE
00070 FS = 275968: REM  FLOPPY SIZE
00075 DEV DV$(2)
00078 GOSUB 740: REM GO SETUP FOR XFRS
00080 MS$(1)="DB-2 DATA FILER KATALOG"
00082 MS$(2)="DB-2 PROGRAM FILER KATALOG"
00084 MS$(3)="DB-2 KOMPLET KATALOG"
00086 PRINT: PRINT "(1)  ";MS$(1): PRINT "(2)  ";MS$(2): PRINT "(3)  ";MS$(3);
00088 INPUT" ";QA$: IF QA$="" THEN SW=3: GOTO 96
00089 FOR X=1 TO LEN(QA$): T$=MID$(QA$,X,1)
00090 IF T$<"1" OR T$>"3" THEN PRINT:PRINT"FORKERT !!!": GOTO 86
00092 NEXT X: SW=VAL(QA$)
00094 IF SW<1 OR SW>3 OR SW<>INT(SW) THEN PRINT: PRINT"WHAT": GOTO 86
00096 FOR X=1 TO 33: PRINT: NEXT X
00098 PP=INT((50-LEN(MS$(SW)))/2)
00100 GOSUB 3040: CNT=0: REM GOTO PRINT HEADING 
00160 OF = 16: REM  SKIP OVER EMBEDDED HEADER
00180 REM  READ A PAGE OF THE DIR
00200 DH = INT(EA/16777216): RM = EA-DH*16777216
00210 DM = INT(RM/65536):    RM = RM-DM*65536
00220 DL = INT(RM/256):      RM = RM-DL*256
00230 DB = RM
00240 POKE CB+1,DB: POKE CB+2,DL: POKE CB+3,DM: POKE CB+4,DH
00250 ER = USR(0): IF ER<>0 THEN GOTO 900
00270 RT = RA+OF: REM  RAM ADR OF CURRENT ENTRY
00280 EC = EC+1:  REM  ENTRY NO.
00290 IF PEEK(RT) = 0 THEN GOTO 950: REM  EMPTY DE
00310 REM  READ NAME FROM DE
00330 N$ = "": FOR I=0 TO 5: N$ = N$+CHR$(PEEK(RT+I)): NEXT
00340 REM  READ DIR BIT
00350 TM = PEEK(RT+8)
00360 D$ = "   ": IF (TM AND 128)<>0 THEN D$ = "DIR"
00380 REM TYPE
00400 TM = INT((TM AND 28)/4): TY$ = "OTHER"
00410 IF TM=0 THEN TY$ = "DATA  "
00420 IF TM=1 THEN TY$ = "BASIC "
00440 REM ACCESS
00460 TM = PEEK(RT+8) AND 3
00470 AR$ = "NONE  "
00480 IF TM=1 THEN AR$ = "READ  "
00490 IF TM=2 THEN AR$ = "WRITE "
00500 IF TM=3 THEN AR$ = "R/W   "
00520 REM  READ DISK ADR OF THIS FILE
00540 DA = 256*(PEEK(RT+9) + 256*(PEEK(RT+10) + 256*PEEK(RT+11)))
00560 REM READ SIZE OF THIS FILE
00580 SZ = 256*(PEEK(RT+12) + 256*(PEEK(RT+13) + 256*PEEK(RT+14)))
00600 REM PRINT ENTRY
00620 IF PEEK(RT) = 1 THEN RE = RE+SZ: GOTO 650
00622 KK$=RIGHT$(N$,1): IF TYPE$="OTHER" GOTO 660
00623 IF LEFT$(TYPE$,5)="BASIC" THEN PF=PF+1
00624 NF=NF+1: REM # OF FILE(S) CNTR
00625 ON SW GOTO 628,632,638
00628 IF LEFT$(TYPE$,4)<>"DATA" GOTO 660
00630 GOTO 638
00632 IF LEFT$(TYPE$,4)="DATA" GOTO 660
00638 PRINT #DV, TAB(1);N$; TAB(11);D$; TAB(16);TY$; TAB(24);AR$;
00640 PRINT #DV, TAB(32);DA; TAB(43);SZ;: PN=POS(X)
00645 GOSUB 5020: REM PRINT MA/KY TYPE
00650 GOSUB 3020: REM GOTO PAGING CNTRL SUB
00660 IF DA+SZ > HA THEN HA = DA+SZ: REM  UPDATE HIGHEST ADR
00670 OF = OF+16: REM  POINT TO NEXT ENTRY
00680 IF OF<256 THEN GOTO 270
00690 EA = EA+256: REM  DA OF NEXT PAGE OF DIR
00700 OF = 0: REM  OFFSET INTO SCRBUF
00710 IF EA < EN THEN GOTO 200
00720 GOTO 950: REM  GO EXIT
00740 REM  XFR SETUP SUBR
00760 POKE 8778,192: POKE 8779,36: REM  POINT USR TO INTERF SUBR
00770 POKE 9435,232: POKE 9436,40: REM  INTERF SUBR GET$
00780 RA = 9970: REM  SCRBUF
00790 CB=9889: REM  XFR CONTROL BLOCK
00800 POKE CB+5,0:   POKE CB+6,1:  REM  XFR 256 BYTES
00810 POKE CB+7,RA-INT(RA/256)*256: POKE CB+8,RA/256: REM  RAM ADR
00820 A = 9899: REM  LOC OF DIR DA
00830 EA = 256*(PEEK(A) + 256*(PEEK(A+1) + 256*PEEK(A+2)))
00840 S = 9902: REM  LOC OF DIR SIZE
00850 ES = 256*(PEEK(S) + 256*(PEEK(S+1) + 256*PEEK(S+2)))
00860 EN = EA+ES: REM  END OF DIR DA
00870 HA = EN: REM  HIGHEST FILE ADR FOUND
00880 RETURN
00900 REM  ERROR PRINTER
00920 T = PEEK(9832): IF T>127 THEN T = T-128+4
00930 PRINT "*** STATION ";CHR$(65+T);" L[SE FEJL";ER;"P] ADRESSE";DA
00932 GOTO 1010
00940 REM
00950 REM  COMMON EXIT
00960 REM  
00970 SS = FS
00980 IF PEEK(9832) > 3 THEN SS = HS
00990 REM R1*
01000 GOSUB 4020: REM GOSUB TO PRINT # FILE(S) COUNT
01010 POKE 8778,208: POKE 8779,16: REM USR=FCERR
01020 POKE 2888,0: IF DV<3 THEN INPUT"TAST RETURN, HVIS FORS[TTELSE";QA$
01030 FOR X=1 TO PEEK(15908): PRINT #DV: NEXT
01034 FOR X=1 TO PEEK(15908): PRINT #DV: NEXT
01040 DEV DV$(1):RUN"DBMSYS","PASS"
01050 REM
01060 REM
01070 REM
03000 REM PAGING CNTRL SUB
03020 CNT=CNT+1: IF CNT<15 OR DV>2 THEN RETURN
03030 PRINT:INPUT"   TAST RETURN, HVIS FORS[TTELSE";QA$
03035 CNT=0: FOR X=1 TO 33: PRINT: NEXT
03040 PRINT #DV,TAB(PP); MS$(SW): PRINT #DV
03050 PRINT #DV, TAB(2);"NAVN"; TAB(17);"TYPE"; TAB(24);"TILGANG";
03060 PRINT #DV, TAB(33);"ADRESSE"; TAB(44);"L[NGDE"
03070 FOR I=0 TO 50: PRINT #DV, "-";: NEXT: PRINT #DV
03080 RETURN: REM BAC WE GO
04000 REM SUB TO PRINT # FILES ON DIR (I.E. 10 DATA FILES, ETC.)
04020 PRINT #DV: IF DV<3 THEN INPUT"TAST RETURN, HVIS FORS[TTELSE";QA$  
04030 IF DV<3 THEN FOR X=1 TO 33: PRINT: NEXT
04040 ON SW GOTO 4400,4200,4050
04045 REM SECTION TO PRINT ALL
04050 PRINT #DV, "MASTER"; TAB(10); "N\GLE"; TAB(20); "ARBEJDS";
04060 PRINT #DV, TAB(30); "PROGRAM"; TAB(40); "TOTAL"
04070 FOR X=0 TO 40 STEP 10:PRINT#DV,TAB(X);"FIL(ER)";:NEXT:PRINT#DV    
04080 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04090 PRINT #DV, MF; TAB(10); KF; TAB(20); SF; TAB(30); PF; TAB(40); NF
04100 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04105 PRINT #DV
04110 FOR X=0 TO 40 STEP 25: PRINT #DV, TAB(X); "BYTE(S)";: NEXT: PRINT #DV
04120 PRINT #DV, "FRI"; TAB(25); "TILBAGE"
04130 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04140 PRINT #DV, SS-HA; TAB(25); RE
04150 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04160 RETURN: REM BAC WE GO
04170 REM
04190 REM SECTION TO PRINT PROGS ONLY
04200 PRINT #DV, "PROGRAM"; TAB(25); "TOTAL"
04210 FOR X=0 TO 40 STEP 25:PRINT#DV,TAB(X);"FIL(ER)";:NEXT:PRINT#DV
04220 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04225 PRINT #DV, PF; TAB(25); NF
04227 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04229 PRINT #DV
04230 FOR X=0 TO 40 STEP 25: PRINT #DV, TAB(X); "BYTE(S)";: NEXT: PRINT #DV
04240 PRINT #DV, "FRI"; TAB(25); "TILBAGE"
04250 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04260 PRINT #DV, SS-HA; TAB(25); RE
04270 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04280 RETURN: REM BAC WE GO
04290 REM
04390 REM SECTION TO PRINT DATA FILE(S) ONLY
04400 PRINT #DV, "MASTER"; TAB(12); "N\GLE"; TAB(24); "ARBEJDS";
04410 PRINT #DV, TAB(36); "TOTAL"
04420 FOR X=0 TO 44 STEP 12: PRINT #DV, TAB(X); "FILE(S)";: NEXT: PRINT #DV
04430 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04440 PRINT #DV, MF; TAB(12); KF; TAB(24); SF; TAB(36); NF
04450 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04455 PRINT #DV
04460 FOR X=0 TO 44 STEP 25: PRINT #DV, TAB(X); "BYTE(S)";: NEXT: PRINT #DV
04470 PRINT #DV, "FRI"; TAB(25); "TILBAGE"
04480 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04490 PRINT #DV, SS-HA; TAB(25); RE
04500 FOR X=0 TO 50: PRINT #DV, TAB(X); "-";: NEXT: PRINT #DV
04510 RETURN: REM BAC WE GO
04520 REM
04530 REM
05000 REM DATA FILE TYPE PRINT SUB (MASTER KEY NON-DMS)
05010 REM
05020 PN=PN+1: IF PN<52 THEN PN=52: REM ARE WE OUT FAR ENOUGH
05025 IF DV=2 OR LEFT$(TYPE$,4)<>"DATA" GOTO 5060
05030 IF KK$="0" THEN PRINT #DV, TAB(PN); "MASTER FIL": MF=MF+1: RETURN
05040 IF KK$<"1" OR KK$>"9" GOTO 5050
05045 PRINT #DV,TAB(PN); "N\GLE FIL": KF=KF+1: RETURN
05050 PRINT #DV, TAB(PN); "ARBEJDS FIL": SF=SF+1:RETURN
05060 PRINT #DV: RETURN: NOT A DATA FILE SO RETURN
05070 REM
05080 REM
05090 REM
50000 REM ERROR HANDLER
50010 ER=PEEK(10226): EL=PEEK(11774)+PEEK(11775)*256
50080 ERR$="DISK FEJL KODE "+STR$(ER)+" P] LINIE "+STR$(EL)
50094 EA=0: FOR I=4 TO 1 STEP -1: EA=EA*256+PEEK(9889+1): NEXT I
50096 DV(3)=PEEK(9832): IF DV(3)>127 THEN DV(3)=DV(3)-128+4
50098 PRINT"FEJL P] STATION "+CHR$(DV(3)+65)+" P] DISK ADRESSE";EA
51020 CLOSE
51050 PRINT:PRINT:PRINT"*****  FEJL  *****":PRINT:PRINT
51060 PRINTERR$
51110 DEV DV$(1): REM SELECT ORGINAL DEVICE
51120 FLAG 6: REM ENABLE PROGRAM ABORT ON EOF HIT ERROR
51150 PRINT
51155 IF ER>0 THEN INPUT "TAST RETURN, HVIS FORS[TTELSE";QA$
51160 CLOSE: RUN"DBMSYS","PASS"

Full view