XRD0 = $08
XRDW0 = $0C
XWR0 = $10
-XWSTR0 = $14
+XWSTR0 = $14 ; write a string in text mode
XTEXT = $19
XHIRES = $1A
XFILLM = $1C
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
XABOX = $95
XFILL = $96
XCHAR = $97
-XSCHAR = $98 ; Draw a string
+XSCHAR = $98 ; Draw a string in hires
XEXPLO = $9C
XPING = $9D
<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>
<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.
<descrip>
-Telestrat has a RS232 port, but it's not used
+Telestrat has a RS232 port, but it's not usable in cc65.
</descrip>
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
;
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
; Switch into graphics mode
BRK_TELEMON(XHIRES)
-
+
; Done, reset the error code
lda #TGI_ERR_OK
;
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)
;
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
;
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
--- /dev/null
+;
+; 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