home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 04 / turboovr.asm < prev    next >
Encoding:
Assembly Source File  |  1988-01-26  |  2.6 KB  |  121 lines

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;
  3. ;     TURBO.OV2
  4. ;
  5. ; Hilfsprogramm zum Neustarten von TURBO-PASCAL, wenn es durch
  6. ; das X-Kommando verlassen worden ist, unter CP/M-Plus.
  7. ; Es wird von TURBO.OVR statt TURBO.COM aufgerufen und macht
  8. ; die dortige Warmstart-Simulation "CP/M-Plus-maessig" fertig,
  9. ; um dann selber TURBO.COM zu laden und zu starten.
  10. ;
  11. ; Cornelis Bockemuehl, 5.11.1987
  12. ;
  13. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  14. ;
  15. ldir    macro        ; Z80-Instruktion
  16.     db 0EDh,0B0h
  17.     endm
  18. ;
  19. org    100h
  20. ;
  21.     xthl        ; -> HL = Adresse der TURBO.COM-Einsprungadr.
  22.     push d
  23.     push b        ; Daten fuer spaetere Verschiebung auf Stack
  24.     push h        ; Adresse zum FCB-Adr. berechnen
  25.     mov e,m
  26.     inx h
  27.     mov d,m
  28.     xchg
  29.     shld tstart+1    ; Einsprungadr. in TURBO.COM
  30. ;
  31. ; Diverse CP/M-Plus-Einstellungen auf Default-Werte setzen
  32.     mvi e,0
  33.     mvi c,2Dh
  34.     call 5        ; Error mode -> 0
  35.     lxi d,0
  36.     mvi c,6Dh
  37.     call 5        ; Console mode -> 0
  38.     mvi e,'$'
  39.     mvi c,6Eh
  40.     call 5        ; Output delimiter -> '$'
  41. ;
  42. ; TURBO.COM oeffnen
  43.     lxi d,51h
  44.     pop h
  45.     dad d        ; FCB-Adresse in TURBO.OVR
  46.     lxi d,80h
  47.     lxi b,20h
  48.     ldir        ; FCB zum Laden von TURBO.COM nach 80h
  49.     mvi a,'C'
  50.     sta 89h
  51.     mvi a,'O'
  52.     sta 8Ah
  53.     mvi a,'M'
  54.     sta 8Bh
  55.     xra a
  56.     sta 0A0h        ; FCB anpassen
  57. oeffnen
  58.     lxi d,80h
  59.     mvi c,0Fh
  60.     call 5        ; TURBO.COM oeffnen
  61.     ana a
  62.     jz laden    ; -> laden, wenn TURBO.COM vorhanden
  63.     lxi d,fehler
  64.     mvi c,9
  65.     call 5        ; Fehlermeldung ausgeben
  66. warten
  67.     mvi e,0FFh
  68.     mvi c,6
  69.     call 5        ; Taste gedrueckt?
  70.     ana a
  71.     jz warten    ; nein: -> weiter warten
  72.     jmp oeffnen        ; ja: -> nochmals probieren
  73. fehler
  74.     db 0Dh,0Ah,'TURBO.COM nicht gefunden: '
  75.     db 'einlegen und Taste druecken',0Dh,0Ah,'$'
  76. ;
  77. ; Laderoutine nach 7980h schieben und starten
  78. laden
  79.     lxi h,lader
  80.     lxi d,7980h
  81.     lxi b,ende-lader
  82.     ldir        ; Lader nach 7980h
  83.     mvi e,80h
  84.     mvi c,2Ch
  85.     call 5        ; Multi-Sector-Count -> 80h: TURBO.COM laden
  86.     lxi d,100h
  87.     lxi h,4000h
  88.     jmp 7980h    ; ab in die Laderoutine
  89. ;
  90. ; Laderoutine: wird vor dem Aufrufen nach 7980h geschoben
  91. lader
  92.     push h
  93.     push d
  94.     mvi c,1Ah
  95.     call 5        ; DMA-Adresse einstellen
  96.     lxi d,80h
  97.     mvi c,14h
  98.     call 5        ; 128 Sektoren lesen (-> Multi-S.-Count)
  99.     ana a        ; war das alles?
  100.     pop h
  101.     pop d
  102.     push psw
  103.     xchg
  104.     dad d        ; DMA-Adresse um 4000h erhoehen
  105.     xchg
  106.     pop psw
  107.     jz 7980h        ; noch nicht alles: -> weiter einlesen
  108.     lxi d,80h
  109.     mvi c,1Ah
  110.     call 5        ; DMA auf 80h: Default-Wert bei Prog.-Starts
  111.     mvi e,1
  112.     mvi c,2Ch
  113.     call 5        ; Multi-Sector-Count auf 1: Default-Wert
  114.     pop b
  115.     pop d
  116.     pop h
  117.     ldir        ; Gewisse Daten von TURBO.OVR nach TURBO.COM
  118. tstart
  119.     jmp $-$        ; zu TURBO.COM: Adresse wird eingesetzt
  120. ende
  121.