diff --git a/asminc/telestrat.inc b/asminc/telestrat.inc index cb28919c2..956d31be3 100644 --- a/asminc/telestrat.inc +++ b/asminc/telestrat.inc @@ -172,7 +172,8 @@ XMUSIC = $45 XZAP = $46 XSHOOT = $47 XMKDIR = $4B ; create a folder. Only available in telemon 3.x -XSOUT = $67 ; send A register to RS232, available in telemon 2.4 & 3.x +XRM = $4D ; remove a folder or a file. Only available in telemon 3.x +XSOUT = $67 ; send accumulator value (A) to RS232, available in telemon 2.4 & 3.x : if RS232 buffer is full, the Oric Telestrat freezes XHRSSE = $8C ; set hires position cursor XDRAWA = $8D ; draw a line XDRAWR = $8E ; draw a line diff --git a/libsrc/telestrat/chline.s b/libsrc/telestrat/chline.s new file mode 100644 index 000000000..6ead10eee --- /dev/null +++ b/libsrc/telestrat/chline.s @@ -0,0 +1,22 @@ +; +; jede jede@oric.org 2018-04-17 +; + +; void chline (unsigned char length); +; + + .export _chline + .include "telestrat.inc" + .include "zeropage.inc" + + +.proc _chline + sta tmp1 +@loop: + lda #'-' ; horizontal line screen code + BRK_TELEMON XWR0 ; macro send char to screen (channel 0 in telemon terms) + dec tmp1 + bne @loop + rts +.endproc + diff --git a/libsrc/telestrat/cputc.s b/libsrc/telestrat/cputc.s new file mode 100644 index 000000000..b4f2966a4 --- /dev/null +++ b/libsrc/telestrat/cputc.s @@ -0,0 +1,15 @@ +; 2018-04-13, Jede (jede@oric.org) +; + +; void cputc (char c); +; + + .export _cputc + + .include "telestrat.inc" + +.proc _cputc + BRK_TELEMON XWR0 ; macro send char to screen (channel 0 in telemon terms) + rts +.endproc + diff --git a/libsrc/telestrat/sysremove.s b/libsrc/telestrat/sysremove.s new file mode 100644 index 000000000..565dfc111 --- /dev/null +++ b/libsrc/telestrat/sysremove.s @@ -0,0 +1,16 @@ +; +; Jede, 10.11.2017 +; +; unsigned char __fastcall__ _sysremove (const char* name); +; + + .export __sysremove + + + .include "zeropage.inc" + .include "telestrat.inc" + +__sysremove: + ; Push name + BRK_TELEMON(XRM) + rts diff --git a/libsrc/telestrat/write.s b/libsrc/telestrat/write.s index 8c2bc08f7..4e059a311 100644 --- a/libsrc/telestrat/write.s +++ b/libsrc/telestrat/write.s @@ -17,7 +17,7 @@ sta ptr2 txa eor #$FF - sta ptr2+1 ; Remember -count-1 + sta ptr2+1 ; remember -count-1 jsr popax ; get buf sta ptr1 @@ -32,7 +32,7 @@ next: cmp #1 beq L1 - ; Here it's a file opened + ; here it's a file opened lda ptr1 sta PTR_READ_DEST lda ptr1+1 @@ -40,6 +40,16 @@ next: lda ptr3 ldy ptr3+1 BRK_TELEMON XFWRITE + ; compute nb of bytes written + + + lda PTR_READ_DEST+1 + sec + sbc ptr1+1 + tax + lda PTR_READ_DEST + sec + sbc ptr1 rts @@ -50,23 +60,23 @@ L1: inc ptr2 L2: ldy #0 lda (ptr1),y tax - cpx #$0A ; Check for \n + cpx #$0A ; check for \n bne L3 - BRK_TELEMON XWR0 ; Macro send char to screen (channel 0 in telemon terms) - lda #$0D ; return to the beggining of the line - BRK_TELEMON XWR0 ; Macro ; + BRK_TELEMON XWR0 ; macro send char to screen (channel 0 in telemon terms) + lda #$0D ; return to the beggining of the line + BRK_TELEMON XWR0 ; macro ldx #$0D L3: - BRK_TELEMON XWR0 ; Macro + BRK_TELEMON XWR0 ; macro inc ptr1 bne L1 inc ptr1+1 jmp L1 -; No error, return count + ; No error, return count L9: lda ptr3 ldx ptr3+1