added sys.pushl() and sys.popl()

This commit is contained in:
Irmen de Jong
2025-10-04 02:27:05 +02:00
parent 0e177cb531
commit efff74c0f1
18 changed files with 309 additions and 17 deletions

View File

@@ -1177,12 +1177,19 @@ sys (part of syslib)
This allows other code to run that might clobber these values temporarily.
``push (value)``
pushes a byte value on the CPU hardware stack. Low-level function that should normally not be used.
pushes a byte value on the CPU hardware stack.
Low-level function that is seldomly used in user code.
``pushw (value)``
pushes a 16-bit word value on the CPU hardware stack. Low-level function that should normally not be used.
pushes a 16-bit word value on the CPU hardware stack.
Low-level function that is seldomly used in user code.
Don't assume anything about the order in which the bytes are pushed - popw will make sense of them again.
``pushl (value)``
pushes a 32-bit value on the CPU hardware stack.
Low-level function that is seldomly used in user code.
Don't assume anything about the order in which the bytes are pushed - popl will make sense of them again.
``push_returnaddress (address)``
pushes a 16 bit memory address on the CPU hardware stack in the same byte order as a JSR instruction would,
which means the next RTS instruction will jump to that address instead.you
@@ -1190,11 +1197,15 @@ sys (part of syslib)
``pop ()``
pops a byte value off the CPU hardware stack and returns it.
Low-level function that should normally not be used.
Low-level function that is seldomly used in user code.
``popw ()``
pops a 16-bit word value off the CPU hardware stack that was pushed before by pushw, and returns it.
Low-level function that should normally not be used.
Low-level function that is seldomly used in user code.
``popl ()``
pops a 32-bit value off the CPU hardware stack that was pushed before by pushl, and returns it.
Low-level function that is seldomly used in user code.
textio (txt.*)

View File

@@ -3,8 +3,7 @@ TODO
LONG TYPE
---------
= add pushl popl
- scan through more library routines if there are opportunities to use the long?
- scan through more library routines if there are opportunities to use a long param or returnvalue?
- document the new long type! and mklong(a,b,c,d) and mklong2(w1,w2) , print_l , print_ulhex (& conv.str_l) and pokel, peekl, cbm.SETTIML/RDTIML, and the use of R0:R1 when doing LONG calculations
- asmsub call convention: @R0R1_32 to specify a 32 bits long combined register R0:R1
- how hard is it to also implement the other comparison operators (<,>,<=,>=) on longs?