        print "          ***  COMMON  .MAX  ***"

;
; ********** 63K CP/M 2.2 COMMON-BANK **********
; *                                            *
; *       Andreas Dobbertin   01.02.1989       *
; *                                            *
; *    Spezial-Version f}r PC International    *
; *       Andreas Dobbertin   13.02.1989       *
; *                                            *
; **********************************************
;

;
; ------ >>>  Neue BIOS-Sprungleiste  <<< ------------
;
common  jp    boot        ;Kaltstartinitialisierung
        jp    wboot       ;Warmstart ausf}hren
        jp    const       ;Konsolenstatus abfragen
        jp    conin       ;Konsoleneingabe
        jp    conout      ;Konsolenausgabe
        jp    list        ;Druckerausgabe
        jp    punch       ;Lochstreifenstanzer
        jp    reader      ;Lochstreifenleser
        jp    home        ;Kopf auf Spur 00 stellen
        jp    seldsk      ;Laufwerk ausw{hlen
        jp    settrk      ;Spur ausw{hlen
        jp    setsec      ;Record w{hlen
        jp    setdma      ;Datenpufferadresse setzen
        jp    read        ;Record lesen
        jp    write       ;Record schreiben
        jp    listst      ;Druckerstatus abfragen
        jp    sectran     ;Recordnummer }bersetzen
;
        jp    charset     ;Zeichensatz ausw{hlen
        jp    doscall     ;CALL DOS/SYSTEM-Routine
        jp    sys2tpa     ;LDIR SYS -> TPA
        jp    tpa2sys     ;LDIR TPA -> SYS

;
; ------ >>>  switching BIOS-Sprungvector  <<< -------
;
boot    call  syscall
        defw  newboot
wboot   call  syscall
        defw  newwarm
const   call  syscall
        defw  #2506
conin   call  syscall
        defw  #2509
conout  call  syscall
        defw  newcono
.list   call  syscall
        defw  newlist
punch   call  syscall
        defw  #2512
.reader call  syscall
        defw  #2515
home    call  syscall
        defw  #2518
seldsk  call  syscall
        defw  newsdsk
settrk  call  syscall
        defw  #251e
setsec  call  syscall
        defw  #2521
setdma  call  syscall
        defw  newsdma
.read   call  syscall
        defw  newread
.write  call  syscall
        defw  newwrte
.listst call  syscall
        defw  #252d
sectran call  syscall
        defw  #2530
;
charset call  syscall
        defw  setchar
sys2tpa call  syscall
        defw  $-$
tpa2sys call  syscall
        defw  $-$

;
; ------ >>>  COMMON BANK Interrupt Routine  <<< -----
;
intntry di
        exx
        push  bc
        ld    (iholdsp+1),sp
        ld    bc,#7fc1
        out   (c),c
        ld    sp,intstck
        call  new_int
        out   (c),c
iholdsp ld    sp,$-$
        pop   bc
        exx
        ei
        ret

;
; ------ >>>  DOS/SYSTEM-Routine aufrufen  <<< -------
;
doscall ld    (hold_hl+1),hl
        pop   hl
        push  hl
        inc   hl
        inc   hl
        ex    (sp),hl
        push  hl
hold_hl ld    hl,$-$

;
; ------ >>>  CALL in SYSTEM-BANK ausf}hren  <<< -----
;
syscall di
        exx
        ex    (sp),hl
        push  de
        push  bc
        ld    (sholdsp+1),sp
        ld    e,(hl)
        inc   hl
        ld    d,(hl)
        ld    hl,(#0003)
        ld    bc,#7fc1
        out   (c),c
        ld    sp,sysstck
        call  newbios
        out   (c),c
sholdsp ld    sp,$-$
        pop   bc
        pop   de
        pop   hl
        exx
        ei
        ret

;
; ------ >>>  CCP zum Warmstart anspringen  <<< ------
;
jumpccp out   (c),c       ;TPA wieder einschalten
        exx               ;Haupt-Registersatz ein
        jp    (hl)        ;Den CCP anspringen

;
; ------ >>>  Unbenutzter ( freier ) Bereich  <<< ----
;
        defs  #fe00-$,#00

;
; ------ >>>  Daten- und Systemvariablen  <<< --------
;
dph_a   defs  8,#00       ;DPH Drive A
        defw  dirbuf
        defw  dpb_a
        defw  csv_a
        defw  alv_a
;
dph_b   defs  8,#00       ;DPH Drive B
        defw  dirbuf
        defw  dpb_b
        defw  csv_b
        defw  alv_b
;
dph_c   defs  8,#00       ;DPH Drive C  (reserviert)
        defw  dirbuf
        defw  dpb_c
        defw  csv_c
        defw  alv_c
;
dph_d   defs  8,#00       ;DPH Drive D  (reserviert)
        defw  dirbuf
        defw  dpb_d
        defw  csv_d
        defw  alv_d
;
dpb_a   defs  16,#00      ;DPB Drive A
dpb_b   defs  16,#00      ;DPB Drive B
dpb_c   defs  16,#00      ;DPB Drive C  (reserviert)
dpb_d   defs  16,#00      ;DPB Drive D  (reserviert)
;
alv_a   equ   #fe80       ;ALV Drive A
alv_b   equ   #fea0       ;ALV Drive B
alv_c   equ   #fec0       ;ALV Drive C  (reserviert)
alv_d   equ   #fee0       ;ALV Drive D  (reserviert)
;
csv_a   equ   #ff00       ;CSV Drive A
csv_b   equ   #ff20       ;CSV Drive B
csv_c   equ   #ff40       ;CSV Drive C  (reserviert)
csv_d   equ   #ff60       ;CSV Drive D  (reserviert)
;
dirbuf  equ   #ff80       ;Directory-Buffer
