Hallo.
Meine Diskettenformatierroutine hab ich in mein Monitorprogramm im Eprom integriert. Um sie auf zu rufen, muß ich nur die Laufwerksnummer (0-3) in das Register c schreiben, dann die Routine aufrufen und schon wird am gewünschten Laufwerk die Diskette formatiert.
Ich will es jetzt etwas komfortabler umsetzen, wie zB bei MS-DOS. Wie frage ich zb. das "A:" bei "FORMAT A:" ab ? Also mit anderen Worten, wie frage ich einen Parameter direkt schon beim Aufruf des Programmes ab ? Wo liegt dieser Buffer im CP/M-80 ?
Ich stelle mir das in etwas so vor:
dskfmt equ 0f03fh
bootstp equ 0f000h
bdos equ 05h
wrt equ 09h
;
org 0100h
di
lxi sp,stack
xra a
;
mvi c,wrt
lxi d,text
call bdos
;
call pmter
cpi "A"
jz fmta
cpi "B"
jz fmtb
cpi " "
jz end
;
fmta mvi c,0
call dskfmt
jmp end
fmtb mvi c,1
call dskfmt
jmp end
;
end lxi h,bootstp
push h
;
pmter ; Hier soll die Abfrageroutine stehen, die den
; Laufwerksbuchstabe aus dem Zeilenpuffer nach dem
; Aufruf von format.com durchführt. Dementsprechend wird
; dann 0 oder 1 in den Akku geschrieben..
;
hlt
;
;
text db "Formatierprogramm für 8" SSSD-Disketten $"
ds 0ffh ; 1 page für stack
stack ds 01h ; Start stack (rückwärts - 1 page reserved)
Alles anzeigen
Ich hab es jetzt stark vereinfacht dargestellt in dem Code. Da käme natürlich noch eine Sicherheitsabfrage und eine Trackanzeige rein. Außerdem würde es erst abfragen, ob nach dem Parameter bzw in dem Byte danach ein ":" ist und ob der Parameter gültig ist und dementsprechend einen Fehler ausspucken, wenn dem nicht so wäre.
Mein einziges Problem ist die Parameterabfrage aus der Kommandozeile..
Vielleicht hat da jemand eine Idee ?
Vielen Dank
Gruß Jan