]> git.sur5r.net Git - cc65/blobdiff - libsrc/tgi/tgi_init.s
Removed (pretty inconsistently used) tab chars from source code base.
[cc65] / libsrc / tgi / tgi_init.s
index c0876f0c58cf1836e2a3b28515483bd65b8ee577..c8fd355d54c3dcccca5dd9c6f9ee1af8ee6a4989 100644 (file)
@@ -1,31 +1,74 @@
 ;
 ; Ullrich von Bassewitz, 21.06.2002
 ;
-; void __fastcall__ tgi_init (unsigned char mode);
-; /* Initialize the given graphics mode. */
+; void tgi_init (void);
+; /* Initialize the already loaded graphics driver */
 
 
         .include        "tgi-kernel.inc"
         .include        "tgi-error.inc"
 
-        .import         _tgi_done
-        .import         _tgi_setcolor
-        .export         _tgi_init
+        .import         pushax, pusha, decax1
+        .importzp       ptr1
+
+
+;----------------------------------------------------------------------------
+
+.code
+.proc   _tgi_init
 
-_tgi_init:
-        pha                             ; Save mode
         jsr     _tgi_done               ; Switch off graphics if needed
-        pla
-        sta     _tgi_mode               ; Remember the mode
         jsr     tgi_init                ; Go into graphics mode
-        jsr     tgi_fetch_error         ; Get the error code
-        bne     @L1                     ; Jump on error
-        ldx     _tgi_colorcount
-        dex
-        txa
-        jmp     _tgi_setcolor           ; tgi_setcolor (tgi_getmaxcolor ());
+        jsr     tgi_geterror            ; Get the error code
+        sta     _tgi_error              ; Save for later reference
+        cmp     #TGI_ERR_OK
+        bne     @L9                     ; Jump on error
+
+        inc     _tgi_gmode              ; Remember that graph mode is active
+
+; Get the maximum X and Y coordinate
+
+        jsr     _tgi_getxres
+        jsr     decax1
+        sta     _tgi_xmax
+        stx     _tgi_xmax+1
+
+        jsr     _tgi_getyres
+        jsr     decax1
+        sta     _tgi_ymax
+        stx     _tgi_ymax+1
+
+; Do driver initialization. Set draw and view pages.
+
+        lda     #0
+        jsr     tgi_setviewpage
+        lda     #0
+        jsr     tgi_setdrawpage
+
+; Set the default palette.
+
+        jsr     tgi_getdefpalette       ; Get the default palette into A/X
+        sta     ptr1
+        stx     ptr1+1                  ; Save it
+        jsr     tgi_setpalette          ; Set the default palette.
+        jsr     tgi_geterror            ; Clear a possible error code
+
+; Set the drawing color to white
+
+@L1:    lda     #tgi_color_white
+        jsr     _tgi_setcolor           ; tgi_setcolor (TGI_COLOR_WHITE);
+
+; Set the text style
+
+        lda     #<$100
+        ldx     #>$100
+        jsr     pushax                  ; Width scale = 1.0
+        jsr     pushax                  ; Heigh scale = 1.0
+        jsr     pusha                   ; Text direction = TGI_TEXT_HORIZONTAL
+        jmp     _tgi_settextstyle       ; A = Font = TGI_FONT_BITMAP
+
+; Error exit
 
-@L1:    lda     #$00
-        sta     _tgi_mode               ; Clear the mode if init was not successful
-        rts
+@L9:    rts
 
+.endproc