; Voorbeeld initialisatieroutine bij opstarten
; Ook leuk voorbeeld van gebruik hook H.DIRD (0FF11H): hook die aangeroepen
;  wordt nadat de BASIC-opstartmelding is gegeven en voordat de prompt op beeld
;  wordt gezet.
;  JT/RM-FCS

; Inleidend commentaar: bij het opstarten gaat de computer in elk slot kijken of
; er op de adressen 4000H en 4001H bepaalde ID-bytes staan. Als die er staan, EN
; er is op 4002H een adres ingevuld, springt de computer naar dat adres.

;-Bij aanroepen van deze initialisatie-routines is het systeemgebied al
; ingevuld (ik zou niet durven zweren dat ALLES er al is), op page 0 staat RAM
; met in ieder geval de slotroutines (1Ch, 24h, 30h) en de printroutine (18h)
; al aanwezig. De drives zijn nog niet geinitialiseerd en of er andere uitbrei-
; dingen zijn geinitialiseerd hangt er maar net vanaf of ze in een lager
; genummerd slot zitten.
;-Als de initialisatie in RAM zit (meestal he?), moet hij wel in mapperpage 2
; zitten.
;-De 2+/TR gebruikt voor de RAMteller het adres 4000H, zodat de ID-code gemold
; wordt. Het RAM wordt niet opnieuw geteld bij een software-reset (defusr=0).


        ORG   4000H

HOOK:   EQU   0FF11H

        DEFB  "AB"            ; ID-bytes: Hier staan adressen
        DEFW  INIT            ; Adres dat hij aanroept bij opstarten
        DEFW  0,0,0,0,0,0     ; Andere adressen: doen er nu niet toe


INIT:   IN    A,(0A8H)        ; MAAK SLOTCODE HUIDIG SLOT: (FxxxSSPP):
        RRCA                  ; Lees slot in page 1
        RRCA
        AND   00000011B       ; .xxx..PP
        LD    HL,0FCC1H       ; Kijk of slot uitgebreid is
        LD    B,0
        LD    C,A
        ADD   HL,BC
        OR    (HL)            ; Fxxx..PP
        JP    P,SETHOK        ; Niet uitgebreid (Bit 7 = 0)? Klaar.
        LD    C,A
        LD    A,L
        ADD   A,4
        LD    L,A
        LD    A,(HL)          ; Lees subslot in page 1
        AND   00001100B
        OR    C               ; FxxxSSPP

SETHOK: LD    HL,HOOK
        LD    DE,HOOKSV
        LD    C,4
        LDIR
        LD    (HOOK+1),A
        LD    HL,HOOKRT
        LD    (HOOK+2),HL
        LD    A,0F7H          ; RST &H30
        LD    (HOOK),A
        RET

;----
HOOKRT: PUSH  HL              ; Textpointer van BASIC bewaren
        LD    A,(0FCAFH)      ; screenmode
        CP    2
        JR    NC,HTERUG
        LD    DE,INSTXT
        JR    PRINT

PRINT2: RST   18H
        INC   DE
PRINT:  LD    A,(DE)          ; Print tekst
        OR    A
        JR    NZ,PRINT2
HTERUG: LD    HL,HOOKSV       ; Zet hook terug
        LD    DE,HOOK
        LD    BC,4
        LDIR
        POP   HL
        JP    HOOK
HOOKSV: DB    0,0,0,0

INSTXT: DB    13,10,"Jack's BASIC version 1.0",13,10
        DB    "Copywrong 1993 Vetnek Software Inc.",13,10,0
 0,0,0,0

INSTXT: DB    13,10,"Jack's BASIC version 1.0",13,10
        DB    "
