MiniDOS#
; PROGRAM TO ACT AS SORT OF A MINI-DOS VERSION 1.0
; DENNIS NEWTON -- 9/27/83
BYTE RTS=[$60],BANK=$D500
BYTE ARRAY FNAME(50) ; USED BY ALL ROUTINES
;*******************************************************************************
PROC GETFNAME(BYTE ARRAY PROMPT) ; GETS AND FORMATS FILE NAME INTO FNAME
BYTE ARRAY FN1(25),FN2(25) ; LOCAL FILE NAMES FOR BUILDING FNAME
PRINT(PROMPT) : INPUTS(FN1)
IF FN1(0)=0 THEN ; NO NAME TYPED
SCOPY(FNAME,"D:*.*") ; SUBSTITUTE DEFAULT
ELSE
IF FN1(2)#': AND FN1(3)#': THEN
SCOPY(FN2,"D:")
SASSIGN(FN2,FN1,3,25)
SCOPY(FN1,FN2)
FI
SCOPY(FNAME,FN1)
FI
PUTE()
RETURN
;*******************************************************************************
PROC DIR()
BYTE ARRAY BUFFER(40)
GETFNAME("DIR: ")
GRAPHICS(0)
OPEN(3,FNAME,6,0)
DO
INPUTSD(3,BUFFER)
PRINT(BUFFER): PRINT(" ")
UNTIL EOF(3) : OD
PUTE()
RETURN
;*******************************************************************************
PROC CIO(BYTE CMD, BYTE ARRAY NAME)
XIO(3,0,CMD,0,0,NAME)
RETURN
;******************************************************************************
PROC RENAME()
GETFNAME("RENAME: ")
CIO(32,FNAME)
RETURN
;*******************************************************************************
PROC ERASE()
BYTE ANS
BYTE ARRAY FTEMP(25)
GETFNAME("ERASE: ")
SCOPY(FTEMP,FNAME)
IF SCOMPARE(FTEMP,"D:*.*") = 0 THEN
PRINT("˝ERASE ALL FILES? ARE YOU SURE?")
ANS=GETD(2)
IF ANS # 'Y THEN : RETURN : FI
FI
CIO(33,FNAME)
RETURN
;*******************************************************************************
PROC PROTECT()
GETFNAME("PROTECT: ")
CIO(35,FNAME)
RETURN
;*******************************************************************************
PROC UNPROTECT()
GETFNAME("UNPROTECT: ")
CIO(36,FNAME)
RETURN
;*******************************************************************************
PROC FORMAT()
BYTE ANS
PRINTE("FORMAT: ˝ARE YOU SURE? ")
ANS=GETD(2)
IF ANS='Y THEN
PRINT("INSERT CORRECT DISK AND PRESS ANY KEY")
ANS=GETD(2)
CIO(254,"D:*.*")
FI
RETURN
;*******************************************************************************
PROC TYPETEXT()
BYTE CH,KBD=764,DEVICE
CLOSE(4)
GETFNAME("TYPE: ")
PRINT("TO PRINTER ALSO (Y/N)? ") : DEVICE=GETD(2)
IF DEVICE='Y THEN
OPEN(4,"P:",8,0)
FI
GRAPHICS(0)
OPEN(3,FNAME,4,0)
DO
CH=GETD(3)
IF DEVICE='Y THEN : PUTD(4,CH) : FI
PUT(27) : PUT(CH)
IF KBD # 255 THEN : KBD = 255 : EXIT : FI
UNTIL EOF(3) : OD
PUTE():CLOSE(4)
RETURN
;*******************************************************************************
PROC WAIT() ; WAIT FOR KEY PRESS
BYTE DUMMY
PUTE() : PRINTE("ANY KEY TO RETURN TO MENU")
DUMMY=GETD(2)
RETURN
;*******************************************************************************
PROC MENU()
GRAPHICS(1)
CLOSE(3)
PRINTDE(6,"ACTION! Mini Dos")
PRINTDE(6," ")
PRINTDE(6,"CHOOSE ONE OF THE FOLLOWING:") : PRINTDE(6," ")
PRINTDE(6," dIRECTORY")
PRINTDE(6," rENAME")
PRINTDE(6," eRASE")
PRINTDE(6," pROTECT")
PRINTDE(6," uNPROTECT")
PRINTDE(6," fORMAT DISK")
PRINTDE(6," tYPE TEXT FILE")
PRINTDE(6," ExIT TO ACTION!")
RETURN
;*******************************************************************************
PROC ADOS() ; MAIN CONTROL ROUTINE
BYTE CHOICE,LMRGN=82
BANK=0 : LMRGN=0 : CLOSE(2) : OPEN(2,"K:",4,0)
DO
MENU()
CHOICE=GETD(2)
IF CHOICE='D THEN : DIR() : WAIT()
ELSEIF CHOICE='R THEN : RENAME()
ELSEIF CHOICE='E THEN : ERASE()
ELSEIF CHOICE='P THEN : PROTECT()
ELSEIF CHOICE='U THEN : UNPROTECT()
ELSEIF CHOICE='F THEN : FORMAT()
ELSEIF CHOICE='T THEN : TYPETEXT() : WAIT()
FI
CLOSE(3)
UNTIL CHOICE='X : OD
GRAPHICS(0) : CLOSE(2)
RETURN