Merge branch 'master' into codegen-on-new-ast

This commit is contained in:
Irmen de Jong 2023-02-09 23:05:54 +01:00
commit 86c22636eb
3 changed files with 19 additions and 3 deletions

View File

@ -460,13 +460,23 @@ inline asmsub getrambank() -> ubyte @A {
}} }}
} }
asmsub numbanks() -> ubyte @A { asmsub numbanks() -> uword @AY {
; -- uses MEMTOP's cx16 extension to query the number of available RAM banks. (each is 8 Kb) ; -- uses MEMTOP's cx16 extension to query the number of available RAM banks. (each is 8 Kb)
; Note that the number of such banks can be bigger than 255 so a word is returned, but mostly
; the A register could suffice as the lsb.
; The maximum number of banks is 256 = 2 Megabytes of banked Ram aka Hiram. (Y=1 and A=0 in this case).
; MEMTOP itself reports 0 in this case which we change into 256 for convenience.
; It reporting 0 doesn't mean 'zero banks', instead it means 256 banks (=2Mb banked RAM),
; as there is no X16 without at least 1 page of banked RAM.
%asm {{ %asm {{
phx phx
sec sec
jsr c64.MEMTOP jsr c64.MEMTOP
plx ldy #0
cmp #0
bne +
iny
+ plx
rts rts
}} }}
} }

View File

@ -202,7 +202,9 @@ You can create multiple source files yourself to modularize your large programs
multiple module files. You can also create "library" modules this way with handy routines, multiple module files. You can also create "library" modules this way with handy routines,
that can be shared among programs. By importing those module files, you can use them in other modules. that can be shared among programs. By importing those module files, you can use them in other modules.
It is possible to tell the compiler where it should look for these files, by using It is possible to tell the compiler where it should look for these files, by using
the ``srcdirs`` command line option. the ``srcdirs`` command line option. This can also be a lo-fi way to use different source files
for different compilation targets if you wish. Which is useful as currently the compiler
doesn't have conditional compilation like #ifdef/#endif in C.
.. _debugging: .. _debugging:

View File

@ -10,6 +10,10 @@ main {
const ubyte REPEATS = 2 const ubyte REPEATS = 2
sub print_speed(uword jiffies) { sub print_speed(uword jiffies) {
if jiffies==0 {
txt.print("\n 0 jiffies measured, speed is extremely high\n")
return
}
float speed = 65536.0 * REPEATS / (jiffies as float / 60.0) float speed = 65536.0 * REPEATS / (jiffies as float / 60.0)
txt.nl() txt.nl()
txt.print_uw(jiffies) txt.print_uw(jiffies)