home *** CD-ROM | disk | FTP | other *** search
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;
- ; TURBO.OV2
- ;
- ; Hilfsprogramm zum Neustarten von TURBO-PASCAL, wenn es durch
- ; das X-Kommando verlassen worden ist, unter CP/M-Plus.
- ; Es wird von TURBO.OVR statt TURBO.COM aufgerufen und macht
- ; die dortige Warmstart-Simulation "CP/M-Plus-maessig" fertig,
- ; um dann selber TURBO.COM zu laden und zu starten.
- ;
- ; Cornelis Bockemuehl, 5.11.1987
- ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;
- ldir macro ; Z80-Instruktion
- db 0EDh,0B0h
- endm
- ;
- org 100h
- ;
- xthl ; -> HL = Adresse der TURBO.COM-Einsprungadr.
- push d
- push b ; Daten fuer spaetere Verschiebung auf Stack
- push h ; Adresse zum FCB-Adr. berechnen
- mov e,m
- inx h
- mov d,m
- xchg
- shld tstart+1 ; Einsprungadr. in TURBO.COM
- ;
- ; Diverse CP/M-Plus-Einstellungen auf Default-Werte setzen
- mvi e,0
- mvi c,2Dh
- call 5 ; Error mode -> 0
- lxi d,0
- mvi c,6Dh
- call 5 ; Console mode -> 0
- mvi e,'$'
- mvi c,6Eh
- call 5 ; Output delimiter -> '$'
- ;
- ; TURBO.COM oeffnen
- lxi d,51h
- pop h
- dad d ; FCB-Adresse in TURBO.OVR
- lxi d,80h
- lxi b,20h
- ldir ; FCB zum Laden von TURBO.COM nach 80h
- mvi a,'C'
- sta 89h
- mvi a,'O'
- sta 8Ah
- mvi a,'M'
- sta 8Bh
- xra a
- sta 0A0h ; FCB anpassen
- oeffnen
- lxi d,80h
- mvi c,0Fh
- call 5 ; TURBO.COM oeffnen
- ana a
- jz laden ; -> laden, wenn TURBO.COM vorhanden
- lxi d,fehler
- mvi c,9
- call 5 ; Fehlermeldung ausgeben
- warten
- mvi e,0FFh
- mvi c,6
- call 5 ; Taste gedrueckt?
- ana a
- jz warten ; nein: -> weiter warten
- jmp oeffnen ; ja: -> nochmals probieren
- fehler
- db 0Dh,0Ah,'TURBO.COM nicht gefunden: '
- db 'einlegen und Taste druecken',0Dh,0Ah,'$'
- ;
- ; Laderoutine nach 7980h schieben und starten
- laden
- lxi h,lader
- lxi d,7980h
- lxi b,ende-lader
- ldir ; Lader nach 7980h
- mvi e,80h
- mvi c,2Ch
- call 5 ; Multi-Sector-Count -> 80h: TURBO.COM laden
- lxi d,100h
- lxi h,4000h
- jmp 7980h ; ab in die Laderoutine
- ;
- ; Laderoutine: wird vor dem Aufrufen nach 7980h geschoben
- lader
- push h
- push d
- mvi c,1Ah
- call 5 ; DMA-Adresse einstellen
- lxi d,80h
- mvi c,14h
- call 5 ; 128 Sektoren lesen (-> Multi-S.-Count)
- ana a ; war das alles?
- pop h
- pop d
- push psw
- xchg
- dad d ; DMA-Adresse um 4000h erhoehen
- xchg
- pop psw
- jz 7980h ; noch nicht alles: -> weiter einlesen
- lxi d,80h
- mvi c,1Ah
- call 5 ; DMA auf 80h: Default-Wert bei Prog.-Starts
- mvi e,1
- mvi c,2Ch
- call 5 ; Multi-Sector-Count auf 1: Default-Wert
- pop b
- pop d
- pop h
- ldir ; Gewisse Daten von TURBO.OVR nach TURBO.COM
- tstart
- jmp $-$ ; zu TURBO.COM: Adresse wird eingesetzt
- ende
-