//------------------------------------------------------------------------ // 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 ASM lib_cbmio_tl_home !8 19, 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