144 lines
2.8 KiB
Text
144 lines
2.8 KiB
Text
//------------------------------------------------------------------------
|
|
// Library CBM I/O
|
|
//
|
|
// Author: Mattias Hansson
|
|
// Copyright (c) : 2005 Mattias Hansson
|
|
// License: GNU LGPL 2
|
|
// Language: 65CM v0.4+
|
|
// Dependencies: (all libs might be included, selectively)
|
|
// Target: CBM computers.
|
|
//
|
|
// Purpose: To shorten lib names to normal usage length
|
|
//------------------------------------------------------------------------
|
|
|
|
#IFNDEF __LIB_CBMIO
|
|
#DEFINE __LIB_CBMIO = 1
|
|
|
|
|
|
GOTO lib_cbmio_skip
|
|
|
|
WORD lib_cbmio_to_txtptr
|
|
FUNC lib_cbmio_print ( lib_cbmio_to_txtptr )
|
|
//On c64 we "borrow" the undocumented "print zero-terminated string" routine
|
|
#IFDEF MACHINE_C64
|
|
ASM
|
|
lda lib_cbmio_to_txtptr
|
|
ldy lib_cbmio_to_txtptr+1
|
|
jsr $ab1e ; strout kernal routine
|
|
ENDASM
|
|
#IFEND
|
|
#IFNDEF MACHINE_C64
|
|
BYTE lib_cbmio_to_char
|
|
PEEK lib_cbmio_to_txtptr -> lib_cbmio_to_char
|
|
WHILE lib_cbmio_to_char
|
|
GOSUB $ffd2 PASSING lib_cbmio_to_char AS ACC
|
|
INC lib_cbmio_to_txtptr
|
|
PEEK lib_cbmio_to_txtptr -> lib_cbmio_to_char
|
|
WEND
|
|
#IFEND
|
|
FEND
|
|
|
|
WORD lib_cbmio_tl_txtptr
|
|
FUNC lib_cbmio_printlf ( lib_cbmio_tl_txtptr )
|
|
|
|
CALL lib_cbmio_print ( lib_cbmio_tl_txtptr )
|
|
CALL lib_cbmio_print ( @lib_cbmio_tl_linefeed )
|
|
|
|
FEND
|
|
|
|
FUNC lib_cbmio_lf
|
|
|
|
CALL lib_cbmio_print ( @lib_cbmio_tl_linefeed )
|
|
|
|
FEND
|
|
|
|
FUNC lib_cbmio_home
|
|
|
|
CALL lib_cbmio_print ( @lib_cbmio_tl_home )
|
|
|
|
FEND
|
|
|
|
|
|
FUNC lib_cbmio_cls
|
|
|
|
CALL lib_cbmio_print ( @lib_cbmio_tl_cls )
|
|
|
|
FEND
|
|
|
|
ASM
|
|
lib_cbmio_tl_home
|
|
!8 19, 0
|
|
lib_cbmio_tl_cls
|
|
!8 147, 0
|
|
lib_cbmio_tl_linefeed
|
|
!8 13, 0
|
|
lib_cbmio_text_nullstr
|
|
!8 0
|
|
ENDASM
|
|
|
|
|
|
BYTE lib_cbmio_hb_value
|
|
FUNC lib_cbmio_hexoutb ( lib_cbmio_hb_value )
|
|
ASM
|
|
;ldy #0
|
|
;lda (lib_cbmio_ho_varaddress),y
|
|
lda lib_cbmio_hb_value
|
|
and #$0f
|
|
tax
|
|
lda lib_cbmio_ho_hexdigits,x
|
|
sta lib_cbmio_ho_hextxt+1
|
|
;lda (lib_cbmio_ho_varaddress),y
|
|
lda lib_cbmio_hb_value
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
tax
|
|
lda lib_cbmio_ho_hexdigits,x
|
|
sta lib_cbmio_ho_hextxt
|
|
ENDASM
|
|
CALL lib_cbmio_print ( @lib_cbmio_ho_hextxt )
|
|
|
|
FEND
|
|
|
|
WORD lib_cbmio_lib_cbmio_ho_value
|
|
FUNC lib_cbmio_hexoutw ( lib_cbmio_lib_cbmio_ho_value )
|
|
ASM
|
|
lda lib_cbmio_lib_cbmio_ho_value+1
|
|
sta lib_cbmio_hb_value
|
|
jsr lib_cbmio_hexoutb
|
|
lda lib_cbmio_lib_cbmio_ho_value
|
|
sta lib_cbmio_hb_value
|
|
jsr lib_cbmio_hexoutb
|
|
ENDASM
|
|
FEND
|
|
|
|
WORD lib_cbmio_i_ptr
|
|
FUNC lib_cbmio_input ( lib_cbmio_i_ptr )
|
|
BYTE char
|
|
|
|
LET char = 0
|
|
WHILE char <> 13
|
|
ASM
|
|
jsr $ffcf
|
|
sta |char|
|
|
ENDASM
|
|
POKE lib_cbmio_i_ptr WITH char
|
|
INC lib_cbmio_i_ptr
|
|
WEND
|
|
DEC lib_cbmio_i_ptr //replace ending #13 with #0
|
|
POKE lib_cbmio_i_ptr WITH 0
|
|
FEND
|
|
|
|
ASM
|
|
|
|
lib_cbmio_ho_hextxt
|
|
!8 0,0,0
|
|
|
|
lib_cbmio_ho_hexdigits
|
|
!pet "0123456789abcdef"
|
|
ENDASM
|
|
|
|
|
|
LABEL lib_cbmio_skip
|
|
#IFEND
|