]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - z180/console.180
Simplify Console I/O. Switch back to IOBYTE.
[z180-stamp.git] / z180 / console.180
index 07fb570a2f07b72cb90009de48d45603503f8fb4..1241d5a05d901a20f71c7406e26d0b14575785bc 100644 (file)
        .z80\r
        \r
 \r
-       global  $coninit\r
-       global  $cists,$ci\r
-       global  $co\r
+; iobyte:\r
+;              0 = console on AVR-System\r
+;              1 = console on SIO/ASCI\r
 \r
 \r
-       extrn   ser.init,ser.instat,ser.in,ser.out\r
-       extrn   ff.init,ff.i.st,ff.in,ff.out\r
-       extrn   ff.out\r
+       extrn   iobyte\r
+       extrn   ff.init,ff.i.st,ff.in\r
+       extrn   ff.o.st,ff.out\r
+    if CPU_Z180\r
+       extrn   as0init,as0ista,as0inp,as0osta,as0out\r
+       extrn   as1init,as1ista,as1inp,as1osta,as1out\r
+    else\r
+       extrn   ser.init,ser.ist,ser.in,ser.ost,ser.out\r
+    endif\r
        \r
+       public  charini\r
+       public  ?const,?conin\r
+       public  ?conos,?cono\r
 \r
        include config.inc\r
+    if CPU_Z180\r
        include z180reg.inc\r
+    endif\r
 \r
        cseg\r
-;\r
-;\r
 \r
-$coninit:\r
+    if CPU_Z180\r
+charini:\r
        call    ff.init\r
+       call    as0init\r
+       jp      as1init\r
+\r
+?const:\r
+       ld      a,(iobyte)\r
+       and     03h\r
+       jp      z,ff.i.st\r
+       dec     a\r
+       jp      z,as0ista\r
+       dec     a\r
+       jp      z,as1ista\r
+       jr      nullstatus\r
+\r
+?conin:\r
+       ld      a,(iobyte)\r
+       and     03h\r
+       jp      z,ff.in\r
+       dec     a\r
+       jp      z,as0inp\r
+       dec     a\r
+       jp      z,as1inp\r
+       jr      nullinput\r
+\r
+?conos:\r
+       ld      a,(iobyte)\r
+       and     03h\r
+       jp      z,ff.o.st\r
+       dec     a\r
+       jp      z,as0osta\r
+       dec     a\r
+       jp      z,as1osta\r
+       jr      rettrue\r
+\r
+?cono:\r
+       ld      a,(iobyte)\r
+       and     03h\r
+       jp      z,ff.out\r
+       dec     a\r
+       jp      z,as0out\r
+       dec     a\r
+       jp      z,as1out\r
+       jr      nulloutput\r
+\r
+    else\r
+\r
+charini:\r
+       call    ff.init\r
+       ld      c,0\r
        call    ser.init\r
+       ld      c,1\r
+       jp      ser.init\r
+\r
+?const:\r
+       ld      a,(iobyte)\r
+       and     03h\r
+       jp      z,ff.i.st\r
+       dec     a\r
+       ld      b,a\r
+       jp      ser.ist\r
+\r
+?conin:\r
+       ld      a,(iobyte)\r
+       and     03h\r
+       jp      z,ff.in\r
+       dec     a\r
+       ld      b,a\r
+       jp      ser.in\r
+\r
+?conos:\r
+       ld      a,(iobyte)\r
+       and     03h\r
+       jp      z,ff.o.st\r
+       dec     a\r
+       ld      b,a\r
+       jp      ser.ost\r
+\r
+?cono:\r
+       ld      a,(iobyte)\r
+       and     03h\r
+       jp      z,ff.out\r
+       dec     a\r
+       ld      b,a\r
+       jp      ser.out\r
+    endif\r
+\r
+\r
+nullinput:\r
+       ld      a,1Ah\r
        ret\r
-       \r
-$cists:\r
-       call    ff.i.st\r
-       ret     nz\r
-       call    ser.instat\r
+\r
+nulloutput:\r
+       ld      a,c\r
        ret\r
-       \r
-$ci:\r
-       call    ff.i.st\r
-       jp      nz,ff.in\r
-       call    ser.instat\r
-       jp      nz,ser.in\r
-       jr      $ci\r
-       \r
-;$costs:\r
-;      jp      f.o.st\r
-       \r
-$co:\r
-       call    ff.out\r
-       jp      ser.out\r
-       \r
+\r
+rettrue:\r
+       or      0FFh\r
+       ret\r
+\r
+nullstatus:\r
+       xor     a\r
+       ret\r
+\r
        end\r
 \r