From 5153bd0551768aefcc46e719491e75801451b04b Mon Sep 17 00:00:00 2001 From: Karol Stasiak Date: Wed, 19 Dec 2018 22:26:10 +0100 Subject: [PATCH] C264 fixes and improvements --- include/c16.ini | 3 ++- include/c264_basic.mfk | 30 ++++++++++++++++++++++++++++++ include/c264_ted.mfk | 2 +- include/c64_basic.mfk | 2 +- include/plus4.ini | 3 ++- 5 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 include/c264_basic.mfk diff --git a/include/c16.ini b/include/c16.ini index c8198cdb..c64ab1ee 100644 --- a/include/c16.ini +++ b/include/c16.ini @@ -7,8 +7,9 @@ modules=loader_1001,c264_kernal,c264_hardware,default_panic,stdlib [allocation] ; TODO -zp_pointers=$C1,$C3,$FB,$FD,$39,$3B,$3D,$43,$4B +zp_pointers=3,5,7,$2b,$2D,$2F,$31,$9B segment_default_start=$100D +segment_default_datastart=after_code segment_default_end=$3FFF [define] diff --git a/include/c264_basic.mfk b/include/c264_basic.mfk new file mode 100644 index 00000000..9f4b7ab8 --- /dev/null +++ b/include/c264_basic.mfk @@ -0,0 +1,30 @@ +// Routines from C264 BASIC ROM + +#if not(CBM_264) +#warn c264_basic module should be only used on C264-compatible targets +#endif + +import c264_kernal +import err + +// print a 16-bit number on the standard output +asm void putword_basic(word xa) @$A45F extern + +alias putword = putword_basic! + +asm void __readline_basic() @$885A extern + +pointer readline_basic() { + __readline_basic() + return readline_out +} + +alias readline = readline_basic! + +const pointer readline_out = $200 + +inline word readword_basic() { + return strz2word(readline_basic()) +} + +alias readword = readword_basic! diff --git a/include/c264_ted.mfk b/include/c264_ted.mfk index ccc53553..e34dc9ca 100644 --- a/include/c264_ted.mfk +++ b/include/c264_ted.mfk @@ -28,7 +28,7 @@ inline void set_ted_cursor(word position) { } inline word get_ted_cursor() { - return ted_cursor_hi:position.lo + return ted_cursor_hi:ted_cursor_lo } const byte black = 0 diff --git a/include/c64_basic.mfk b/include/c64_basic.mfk index 5cd3634a..4275559e 100644 --- a/include/c64_basic.mfk +++ b/include/c64_basic.mfk @@ -10,7 +10,7 @@ import err // print a 16-bit number on the standard output asm void putword_basic(word xa) @$BDCD extern -//alias putword = putword_basic! +alias putword = putword_basic! asm void __readline_basic() @$A560 extern diff --git a/include/plus4.ini b/include/plus4.ini index c6cb167b..61b05ee5 100644 --- a/include/plus4.ini +++ b/include/plus4.ini @@ -7,8 +7,9 @@ modules=loader_1001,c264_kernal,c264_hardware,default_panic,stdlib [allocation] ; TODO -zp_pointers=$C1,$C3,$FB,$FD,$39,$3B,$3D,$43,$4B +zp_pointers=3,5,7,$2b,$2D,$2F,$31,$9B segment_default_start=$100D +segment_default_datastart=after_code segment_default_end=$3FFF [define]