add some conio functions

This commit is contained in:
Christian Groessler 2014-03-11 01:17:59 +01:00
parent 361da29e51
commit 889783bedb
7 changed files with 91 additions and 9 deletions

View File

@ -9,6 +9,12 @@
.import popa, _gotoxy, cputdirect, setcursor
.importzp tmp1
.ifndef __ATARI5200__
CHRCODE = $12+64
.else
CHRCODE = 14
.endif
_chlinexy:
pha ; Save the length
jsr popa ; Get y
@ -19,12 +25,8 @@ _chline:
cmp #0 ; Is the length zero?
beq L9 ; Jump if done
sta tmp1
L1: lda #$12+64 ; Horizontal line, screen code
L1: lda #CHRCODE ; Horizontal line, screen code
jsr cputdirect ; Direct output
dec tmp1
bne L1
L9: jmp setcursor

View File

@ -10,6 +10,12 @@
.import popa, _gotoxy, putchar, setcursor
.importzp tmp1
.ifndef __ATARI5200__
CHRCODE = $7C ; Vertical bar
.else
CHRCODE = 1 ; exclamation mark
.endif
_cvlinexy:
pha ; Save the length
jsr popa ; Get y
@ -22,7 +28,7 @@ _cvline:
sta tmp1
L1: lda COLCRS
pha
lda #$7C ; Vertical bar
lda #CHRCODE ; Vertical bar
jsr putchar ; Write, no cursor advance
pla
sta COLCRS
@ -30,6 +36,3 @@ L1: lda COLCRS
dec tmp1
bne L1
L9: jmp setcursor

View File

@ -0,0 +1 @@
.include "../atari/cclear.s"

View File

@ -0,0 +1 @@
.include "../atari/chline.s"

35
libsrc/atari5200/clock.s Normal file
View File

@ -0,0 +1,35 @@
;
; from Atari computer version by Christian Groessler, 2014
;
; clock_t clock (void);
; unsigned _clocks_per_sec (void);
;
.export _clock, __clocks_per_sec
.importzp sreg
.include "atari5200.inc"
.proc _clock
ldx #5 ; Synchronize with Antic, so the interrupt won't change RTCLOK
stx WSYNC ; while we're reading it. The synchronization is done same as
@L1: dex ; in SETVBLV function in Atari OS.
bne @L1
stx sreg+1 ; Byte 3 is always zero
stx sreg ; Byte 2 is always zero, too
lda RTCLOK+1
ldx RTCLOK
rts
.endproc
.proc __clocks_per_sec
ldx #$00 ; Clear high byte of return value
lda #60
rts
.endproc

View File

@ -0,0 +1 @@
.include "../atari/cvline.s"

View File

@ -0,0 +1,39 @@
;
; Ullrich von Bassewitz, 2003-08-12
;
; unsigned char __fastcall__ _sysuname (struct utsname* buf);
;
.export __sysuname, utsdata
.import utscopy
__sysuname = utscopy
;--------------------------------------------------------------------------
; Data. We define a fixed utsname struct here and just copy it.
.rodata
utsdata:
; sysname
.asciiz "cc65"
; nodename
.asciiz ""
; release
.byte ((.VERSION >> 8) & $0F) + '0'
.byte '.'
.byte ((.VERSION >> 4) & $0F) + '0'
.byte $00
; version
.byte (.VERSION & $0F) + '0'
.byte $00
; machine
.asciiz "Atari5200"