mirror of
https://github.com/hsoft/collapseos.git
synced 2024-12-28 23:38:05 +11:00
a9ed8da0b2
The previous approach of maintaining R> and W> pointers was conceptually simple, but made INT handler code actually quite complex. Now, we maintain indexes instead. It's much easier to perform bounds checks and to compare for equality, something we have to do quick in the INT handler.
15 lines
532 B
Plaintext
15 lines
532 B
Plaintext
0x80 CONSTANT ACIA_CTL ( IO port for ACIA's control register )
|
|
0x81 CONSTANT ACIA_IO ( IO port for ACIA's data registers )
|
|
0x20 CONSTANT ACIA_BUFSZ ( SZ-1 must be a mask )
|
|
( Address in memory that can be used variables shared
|
|
with ACIA's native words. 4 bytes used. )
|
|
CREATE ACIA_MEM SYSVARS 0x70 + ,
|
|
( Points to ACIA buf )
|
|
: ACIA( ACIA_MEM @ 2+ ;
|
|
( Read buf idx Pre-inc )
|
|
: ACIAR> ACIA_MEM @ ;
|
|
( Write buf idx Post-inc )
|
|
: ACIAW> ACIA_MEM @ 1+ ;
|
|
( This means that if W> == R>, buffer is full.
|
|
If R>+1 == W>, buffer is empty. )
|