2024-07-04 00:04:45 +02:00
|
|
|
|
2024-06-01 15:03:01 +02:00
|
|
|
%import textio
|
2024-04-12 21:56:25 +02:00
|
|
|
%zeropage basicsafe
|
2024-06-29 15:41:39 +02:00
|
|
|
%option no_sysinit
|
2023-12-31 01:02:33 +01:00
|
|
|
|
2024-01-07 18:48:18 +01:00
|
|
|
main {
|
2024-05-18 17:15:31 +02:00
|
|
|
sub start() {
|
2024-07-04 00:04:45 +02:00
|
|
|
ringbuffer256.init()
|
2024-06-29 15:41:39 +02:00
|
|
|
|
2024-07-04 00:04:45 +02:00
|
|
|
cx16.r0L = ringbuffer256.get()
|
|
|
|
if_cs {
|
|
|
|
txt.print_ub(cx16.r0L)
|
|
|
|
txt.nl()
|
|
|
|
} else {
|
|
|
|
txt.print("buffer empty\n")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2024-06-29 15:41:39 +02:00
|
|
|
|
2024-07-04 00:04:45 +02:00
|
|
|
ringbuffer256 {
|
|
|
|
uword size
|
|
|
|
ubyte head
|
|
|
|
ubyte tail
|
|
|
|
ubyte[256] buffer
|
2024-06-01 15:03:01 +02:00
|
|
|
|
2024-07-04 00:04:45 +02:00
|
|
|
sub init() {
|
|
|
|
size = head = 0
|
|
|
|
tail = 255
|
2024-06-29 14:23:17 +02:00
|
|
|
}
|
2024-06-01 15:03:01 +02:00
|
|
|
|
2024-07-04 00:04:45 +02:00
|
|
|
sub add(ubyte value) -> bool {
|
|
|
|
if size==256
|
|
|
|
return false
|
2024-06-29 15:41:39 +02:00
|
|
|
|
2024-07-04 00:04:45 +02:00
|
|
|
buffer[head] = value
|
|
|
|
head++
|
|
|
|
size++
|
|
|
|
}
|
2024-06-29 15:41:39 +02:00
|
|
|
|
2024-07-04 00:04:45 +02:00
|
|
|
sub get() -> ubyte {
|
|
|
|
if size==0 {
|
|
|
|
sys.clear_carry()
|
|
|
|
return 0
|
|
|
|
}
|
2024-06-29 15:41:39 +02:00
|
|
|
|
2024-07-04 00:04:45 +02:00
|
|
|
size--
|
|
|
|
tail++
|
|
|
|
sys.set_carry()
|
|
|
|
return buffer[tail]
|
2024-05-18 17:15:31 +02:00
|
|
|
}
|
2024-07-04 00:04:45 +02:00
|
|
|
|
2024-03-16 20:58:45 +01:00
|
|
|
}
|
2024-07-04 00:04:45 +02:00
|
|
|
|
|
|
|
;
|
|
|
|
;main {
|
|
|
|
; sub start() {
|
|
|
|
; signed()
|
|
|
|
; unsigned()
|
|
|
|
; }
|
|
|
|
;
|
|
|
|
; sub signed() {
|
|
|
|
; byte @shared bvalue = -100
|
|
|
|
; word @shared wvalue = -20000
|
|
|
|
;
|
|
|
|
; bvalue /= 2 ; TODO should be a simple bit shift?
|
|
|
|
; wvalue /= 2 ; TODO should be a simple bit shift?
|
|
|
|
;
|
|
|
|
; txt.print_b(bvalue)
|
|
|
|
; txt.nl()
|
|
|
|
; txt.print_w(wvalue)
|
|
|
|
; txt.nl()
|
|
|
|
;
|
|
|
|
; bvalue *= 2
|
|
|
|
; wvalue *= 2
|
|
|
|
;
|
|
|
|
; txt.print_b(bvalue)
|
|
|
|
; txt.nl()
|
|
|
|
; txt.print_w(wvalue)
|
|
|
|
; txt.nl()
|
|
|
|
; }
|
|
|
|
;
|
|
|
|
; sub unsigned() {
|
|
|
|
; ubyte @shared ubvalue = 100
|
|
|
|
; uword @shared uwvalue = 20000
|
|
|
|
;
|
|
|
|
; ubvalue /= 2
|
|
|
|
; uwvalue /= 2
|
|
|
|
;
|
|
|
|
; txt.print_ub(ubvalue)
|
|
|
|
; txt.nl()
|
|
|
|
; txt.print_uw(uwvalue)
|
|
|
|
; txt.nl()
|
|
|
|
;
|
|
|
|
; ubvalue *= 2
|
|
|
|
; uwvalue *= 2
|
|
|
|
;
|
|
|
|
; txt.print_ub(ubvalue)
|
|
|
|
; txt.nl()
|
|
|
|
; txt.print_uw(uwvalue)
|
|
|
|
; txt.nl()
|
|
|
|
; }
|
|
|
|
;}
|