summaryrefslogtreecommitdiff
path: root/z180/console.180
diff options
context:
space:
mode:
authorLeo C2015-05-01 23:19:32 +0200
committerLeo C2015-05-01 23:19:32 +0200
commit64cc220767e870fad388fb9021cf96ff2958275b (patch)
treee3e465d35e364b2c9f70c39dce77820c5480eb92 /z180/console.180
parent2fe441224da6410ec112322abf78524589b15498 (diff)
downloadz180-stamp-64cc220767e870fad388fb9021cf96ff2958275b.zip
Simplify Console I/O. Switch back to IOBYTE.
Diffstat (limited to 'z180/console.180')
-rw-r--r--z180/console.180143
1 files changed, 116 insertions, 27 deletions
diff --git a/z180/console.180 b/z180/console.180
index d4f4130..1241d5a 100644
--- a/z180/console.180
+++ b/z180/console.180
@@ -2,47 +2,136 @@
.z80
- global $coninit
- global $cists,$ci
- global $co
+; iobyte:
+; 0 = console on AVR-System
+; 1 = console on SIO/ASCI
- extrn ser.init,ser.ist,ser.in,ser.ost,ser.out
+ extrn iobyte
extrn ff.init,ff.i.st,ff.in
extrn ff.o.st,ff.out
+ if CPU_Z180
+ extrn as0init,as0ista,as0inp,as0osta,as0out
+ extrn as1init,as1ista,as1inp,as1osta,as1out
+ else
+ extrn ser.init,ser.ist,ser.in,ser.ost,ser.out
+ endif
+ public charini
+ public ?const,?conin
+ public ?conos,?cono
include config.inc
+ if CPU_Z180
include z180reg.inc
+ endif
cseg
-;
-;
-$coninit:
+ if CPU_Z180
+charini:
+ call ff.init
+ call as0init
+ jp as1init
+
+?const:
+ ld a,(iobyte)
+ and 03h
+ jp z,ff.i.st
+ dec a
+ jp z,as0ista
+ dec a
+ jp z,as1ista
+ jr nullstatus
+
+?conin:
+ ld a,(iobyte)
+ and 03h
+ jp z,ff.in
+ dec a
+ jp z,as0inp
+ dec a
+ jp z,as1inp
+ jr nullinput
+
+?conos:
+ ld a,(iobyte)
+ and 03h
+ jp z,ff.o.st
+ dec a
+ jp z,as0osta
+ dec a
+ jp z,as1osta
+ jr rettrue
+
+?cono:
+ ld a,(iobyte)
+ and 03h
+ jp z,ff.out
+ dec a
+ jp z,as0out
+ dec a
+ jp z,as1out
+ jr nulloutput
+
+ else
+
+charini:
call ff.init
+ ld c,0
call ser.init
+ ld c,1
+ jp ser.init
+
+?const:
+ ld a,(iobyte)
+ and 03h
+ jp z,ff.i.st
+ dec a
+ ld b,a
+ jp ser.ist
+
+?conin:
+ ld a,(iobyte)
+ and 03h
+ jp z,ff.in
+ dec a
+ ld b,a
+ jp ser.in
+
+?conos:
+ ld a,(iobyte)
+ and 03h
+ jp z,ff.o.st
+ dec a
+ ld b,a
+ jp ser.ost
+
+?cono:
+ ld a,(iobyte)
+ and 03h
+ jp z,ff.out
+ dec a
+ ld b,a
+ jp ser.out
+ endif
+
+
+nullinput:
+ ld a,1Ah
ret
-
-$cists:
- call ff.i.st
- ret nz
- call ser.ist
+
+nulloutput:
+ ld a,c
ret
-
-$ci:
- call ff.i.st
- jp nz,ff.in
- call ser.ist
- jp nz,ser.in
- jr $ci
-
-;$costs:
-; jp f.o.st
-
-$co:
- call ff.out
- jp ser.out
-
+
+rettrue:
+ or 0FFh
+ ret
+
+nullstatus:
+ xor a
+ ret
+
end