]> git.sur5r.net Git - cc65/commitdiff
toascii.s added, doc updated, tgi_line & tgi_outtext are available
authorjede <jede@oric.org>
Sun, 22 Oct 2017 21:06:56 +0000 (23:06 +0200)
committerjede <jede@oric.org>
Sun, 22 Oct 2017 21:06:56 +0000 (23:06 +0200)
asminc/telestrat.inc
doc/telestrat.sgml
libsrc/telestrat/tgi/telestrat-228-200-3.s
libsrc/telestrat/tgi/telestrat-240-200-2.s
libsrc/telestrat/toascii.s [new file with mode: 0644]

index 424047725f2524aa69caec15106ab2886d4fb443..352aa0657cd4de2f7bfb0385870f8afca0319d24 100644 (file)
@@ -152,7 +152,7 @@ SCREEN          := $BB80
 XRD0             = $08
 XRDW0            = $0C
 XWR0             = $10 
-XWSTR0           = $14 
+XWSTR0           = $14          ; write a string in text mode
 XTEXT            = $19
 XHIRES           = $1A
 XFILLM           = $1C
@@ -165,14 +165,14 @@ XCSSCR           = $35          ; switch on cursor
 XCLOSE           = $3A          ; only in TELEMON 3.x Close file
 XFWRITE          = $3B          ; only in TELEMON 3.x write file
 XSONPS           = $40
-XOUPS            = $42
+XOUPS            = $42          ; sends Oups sound into PSG
 XPLAY            = $43
 XSOUND           = $44 
 XMUSIC           = $45 
 XZAP             = $46
 XSHOOT           = $47
 XSOUT            = $67          ; Send A register to RS232, available in telemon 2.4 & 3.x
-XHRSSE           = $8C          ; Put in X and Y
+XHRSSE           = $8C          ; Set hires position cursor
 XDRAWA           = $8D          ; Draw a line 
 XDRAWR           = $8E          ; Draw a line 
 XCIRCL           = $8F
@@ -184,7 +184,7 @@ XBOX             = $94
 XABOX            = $95
 XFILL            = $96
 XCHAR            = $97
-XSCHAR           = $98          ; Draw a string
+XSCHAR           = $98          ; Draw a string in hires
 XEXPLO           = $9C 
 XPING            = $9D
 
index fda4dee86731da4e2fd7812d05ee575b8af4d7aa..0c85c68c5da0cc8a800a370ec900f5987b91985a 100644 (file)
@@ -9,7 +9,7 @@
 <date>2017-01-22
 
 <abstract>
-An overview over the Telestrat (Telemon 3.0 : http://orix.oric.org) runtime system as it is implemented for the cc65 C
+An overview over the Telestrat (Telemon 2.4 & Telemon 3.x : http://orix.oric.org) runtime system as it is implemented for the cc65 C
 compiler.)
 </abstract>
 
@@ -113,6 +113,21 @@ structures; accessing the struct fields will access the chip registers.
 
 <sect>Loadable drivers<p>
 
+<sect1>TGI<p>
+
+TGI drivers is available on Oric Telestrat with some functions :
+
+<itemize>
+<item>
+<item>tgi_install
+<item>tgi_init
+<item>tgi_clear
+<item>tgi_setpixel
+<item>tgi_getmaxx
+<item>tgi_getmaxy
+</itemize>
+
+
 <sect1>Extended memory drivers<p>
 
 No extended memory drivers are currently available for the Telestrat.
@@ -139,7 +154,7 @@ Telestrat manages also mouse, but it had been no handled yet in this version.
 
 <descrip>
 
-Telestrat has a RS232 port, but it's not used
+Telestrat has a RS232 port, but it's not usable in cc65.
 
 </descrip>
 
index e20c2c8777caa8dd29638d87206cd7029dba1e3f..a4313b09242433d04d4b594ee21f3191c400d4d9 100644 (file)
@@ -286,9 +286,27 @@ GETPIXEL:
 
 LINE:
         ; not done yet
+        lda   X1
+        sta   HRS1
+        lda   Y1
+        sta   HRS2
+        
+        lda   X2
+        sta   HRS3
+        lda   Y2
+        sta   HRS4
+        
+        lda   #$ff
+        sta   HRSPAT
+
+        BRK_TELEMON(XDRAWA)
+
         rts
 
+     
+        
 CIRCLE:
+
         ; not done yet
         rts
         
@@ -332,5 +350,25 @@ TEXTSTYLE:
 ;
 
 OUTTEXT:
-        ; not done yet
+        ; put hires cursor in X & Y
+        lda   #$00
+        jsr   SETPIXELSETMODE
+        
+        
+        ; count the length of the string
+        ldy   #$00
+loop:        
+        lda   (ptr3),y
+        beq   out
+        iny
+        bne   loop
+out:
+        ; XSCHAR routine from telemon needs to have the length of the string in X register
+        ; copy Y register to X register. It could be optimized in 65C02 with TYX
+        tya 
+        tax
+    
+        lda   ptr3     ; XSCHAR needs in A and Y the adress of the string        
+        ldy   ptr3+1    
+        BRK_TELEMON(XSCHAR)
         rts
index fcc1ce3f2d103f096dedd0c5871751fbd6e89d6e..8a30ddd45f85e779fc9572fc9752c2fdabce2779 100644 (file)
@@ -125,7 +125,7 @@ INIT:
 ; Switch into graphics mode
 
         BRK_TELEMON(XHIRES)
-
+      
 ; Done, reset the error code
 
         lda     #TGI_ERR_OK
@@ -248,14 +248,16 @@ GETDEFPALETTE:
 ;
 
 SETPIXEL:
+        lda #$80       ; curset on 
+SETPIXELSETMODE:        
+        sta HRSFB
         
         lda X1
         sta HRS1
         lda Y1
         sta HRS2
         
-        lda #$80       ; curset on 
-        sta HRSFB
+        
         
         BRK_TELEMON(XCURSE)
 
@@ -278,9 +280,24 @@ GETPIXEL:
 ;
 
 LINE:
-        ; not done yet
-        rts
 
+        lda   X1
+        sta   HRS1
+        lda   Y1
+        sta   HRS2
+
+        lda   X2
+        sta   HRS3
+        lda   Y2
+        sta   HRS4
+        
+        lda   #$ff
+        sta   HRSPAT
+
+        BRK_TELEMON(XDRAWA)
+
+        rts
+        
 CIRCLE:    
         ; not done yet
         rts      
@@ -325,5 +342,25 @@ TEXTSTYLE:
 ;
 
 OUTTEXT:
-        ; Not done yet
+        ; put hires cursor in X & Y
+        lda   #$00
+        jsr   SETPIXELSETMODE
+        
+        
+        ; count the length of the string
+        ldy   #$00
+loop:        
+        lda   (ptr3),y
+        beq   out
+        iny
+        bne   loop
+out:
+        ; XSCHAR routine from telemon needs to have the length of the string in X register
+        ; copy Y register to X register. It could be optimized in 65C02 with TYX
+        tya 
+        tax
+    
+        lda   ptr3     ; XSCHAR needs in A and Y the adress of the string        
+        ldy   ptr3+1    
+        BRK_TELEMON(XSCHAR)
         rts
diff --git a/libsrc/telestrat/toascii.s b/libsrc/telestrat/toascii.s
new file mode 100644 (file)
index 0000000..77f0500
--- /dev/null
@@ -0,0 +1,14 @@
+;
+; char __fastcall__ toascii (char c);
+; /* Convert a target-specific character to ASCII. */
+;
+
+.export _toascii
+
+.proc   _toascii
+
+; .X must be zero, on return.
+        ldx     #>$0000
+        rts
+
+.endproc