From 93f202850ab2350da3e32a6a790248ca618c9a08 Mon Sep 17 00:00:00 2001 From: jede Date: Sun, 22 Oct 2017 23:06:56 +0200 Subject: [PATCH] toascii.s added, doc updated, tgi_line & tgi_outtext are available --- asminc/telestrat.inc | 8 ++-- doc/telestrat.sgml | 19 ++++++++- libsrc/telestrat/tgi/telestrat-228-200-3.s | 40 +++++++++++++++++- libsrc/telestrat/tgi/telestrat-240-200-2.s | 49 +++++++++++++++++++--- libsrc/telestrat/toascii.s | 14 +++++++ 5 files changed, 117 insertions(+), 13 deletions(-) create mode 100644 libsrc/telestrat/toascii.s diff --git a/asminc/telestrat.inc b/asminc/telestrat.inc index 424047725..352aa0657 100644 --- a/asminc/telestrat.inc +++ b/asminc/telestrat.inc @@ -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 diff --git a/doc/telestrat.sgml b/doc/telestrat.sgml index fda4dee86..0c85c68c5 100644 --- a/doc/telestrat.sgml +++ b/doc/telestrat.sgml @@ -9,7 +9,7 @@ 2017-01-22 -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.) @@ -113,6 +113,21 @@ structures; accessing the struct fields will access the chip registers. Loadable drivers

+TGI

+ +TGI drivers is available on Oric Telestrat with some functions : + + + +tgi_install +tgi_init +tgi_clear +tgi_setpixel +tgi_getmaxx +tgi_getmaxy + + + Extended memory drivers

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. -Telestrat has a RS232 port, but it's not used +Telestrat has a RS232 port, but it's not usable in cc65. diff --git a/libsrc/telestrat/tgi/telestrat-228-200-3.s b/libsrc/telestrat/tgi/telestrat-228-200-3.s index e20c2c877..a4313b092 100644 --- a/libsrc/telestrat/tgi/telestrat-228-200-3.s +++ b/libsrc/telestrat/tgi/telestrat-228-200-3.s @@ -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 diff --git a/libsrc/telestrat/tgi/telestrat-240-200-2.s b/libsrc/telestrat/tgi/telestrat-240-200-2.s index fcc1ce3f2..8a30ddd45 100644 --- a/libsrc/telestrat/tgi/telestrat-240-200-2.s +++ b/libsrc/telestrat/tgi/telestrat-240-200-2.s @@ -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 index 000000000..77f050021 --- /dev/null +++ b/libsrc/telestrat/toascii.s @@ -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 -- 2.39.5