From 02e6979a46fc98de7baa78732f35935cdbd93c4a Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sat, 23 May 2020 20:15:28 -0400 Subject: [PATCH] emul: implement AT-XY VI, here we come! --- emul/forth.bin | Bin 6029 -> 6081 bytes emul/forth.c | 16 ++++++++++++++++ emul/xcomp.fs | 2 ++ 3 files changed, 18 insertions(+) diff --git a/emul/forth.bin b/emul/forth.bin index bb31f0309d5b04334213f16085a8ab0c4524dfb1..7f04214e5045e8fb62576c85ed883b1b1d93f1ed 100644 GIT binary patch delta 922 zcmXw1O-NKx6h80W>yR_fyYJ4Mr=_T)4LIYZCZ=Hc)4Ul)ar|kX!MGCp@rO)9X+SWN zkXE+31`4ekXf30>7vw$M;B69ynv3@t^n_xrC0(>1X9SB69cSTnG@6O z9I0SQ@rXtJhb&DuOD$-w=Wt(h=zgeRYly?vXnY)P541{M9J53qr@g09(ydd~2b~ad z%zy(LRSPrP@Dug*HiM#VlT~q7?-|(DbDBKJn>bSt3d$_W>RH`_Nevw(%SDW(YF1A& zA5cis3{Z6&J0M*<(2hTX@Q{(y)*zc-$6BIShR3F`vLO-XrpmZT@YcQ*_hZ8Xa|_e+ zK@JWrO;enzTYQ6T6zx}+gC^Ry_%=y#1BFxUyF}lp^y+3w)-68prgCZ9EqFL_Hcqh7 z)8!G|bN=2Tw@{tbE1fpT9)>o$WEF0Zl(H9TiZYh2&o2b;V7dd|?2*%~!QbEcA(rAY znFaA^Y^19O=P!wN2vujG42pCz-xE*Ko~9v(4{75iGDy7i817x3;%(%b>wx>=t@!F` zAW60=oJK2YHj<*ps5J+S8I;|qK6Xhe*|+ccb+Kf0Ig_j&7H{Hg*Tt?es~n3uuc2f_ zyLT*6=f!mz4M*cTiuy!5)C?S^?^D`EWkmn(cDh@tAwW}CfubN1ArewyX-Q2AG%Y6F2wDXqf^knI9?($Z zp&ra|0OQ$%2U0F17!NgEB;n)%5D2aQlPPr(ava@7Yv&ANhTSZo+iyj+VBOD%RZ@37OQC|g;H-Xx1D%J0GQQ++fhg-ykrm2~m)6E>*T9G=OsySXDh2#1)r#XoA9A735 zH?R>3Hc0fDN|uM&%p=smxf)qps4%=ZJuhUDxx+;waNa0#8`H}Cl2jnCXihu|G;}ZV zBOV49)T8aMa)>!xTH26_r-pj!!BshRjZlnT4JhJKpLD$&$cYbuGyVnc@D6g_x5OEuI@aUYkW= z_7?uwv^X#(gPVq&UB)F-hw(4Ux4f7#({+aiZq{&LJfmaMZF=lY)uf(ghlbcT!?jOL zT#er7iONRBP%5EZzAaPmV6D1uiq>Fl!#nf4vg6((7Wr+?!?&`)MQOS{J~h+ah?CEY z$>3nWj8R=V+=4Z-Wfq79FUUSV|BGe32}EGbnRDQ!Hv;{$)6?U3oEyVg*$lfN{siaL YpF!c&EGl_X6-p?I7z%abJs;}%3w?0NR{#J2 diff --git a/emul/forth.c b/emul/forth.c index b5ae068..1d476b5 100644 --- a/emul/forth.c +++ b/emul/forth.c @@ -17,6 +17,8 @@ // read 1024 bytes from the DATA port. #define BLK_PORT 0x03 #define BLKDATA_PORT 0x04 +#define SETX_PORT 0x05 +#define SETY_PORT 0x06 static FILE *fp; static int retcode = 0; @@ -64,6 +66,18 @@ static void iowr_ret(uint8_t val) retcode = val; } +static void iowr_setx(uint8_t val) +{ + int y, x; getyx(w, y, x); + wmove(w, y, val); +} + +static void iowr_sety(uint8_t val) +{ + int y, x; getyx(w, y, x); + wmove(w, val, x); +} + int main(int argc, char *argv[]) { Machine *m = emul_init(); @@ -74,6 +88,8 @@ int main(int argc, char *argv[]) m->iord[STDIO_PORT] = iord_stdio; m->iowr[STDIO_PORT] = iowr_stdio; m->iowr[RET_PORT] = iowr_ret; + m->iowr[SETX_PORT] = iowr_setx; + m->iowr[SETY_PORT] = iowr_sety; w = NULL; if (argc == 2) { fp = fopen(argv[1], "r"); diff --git a/emul/xcomp.fs b/emul/xcomp.fs index 786c693..63d0ad2 100644 --- a/emul/xcomp.fs +++ b/emul/xcomp.fs @@ -22,6 +22,8 @@ BLK( I + C@ 4 PC! LOOP ; +: COLS 80 ; : LINES 32 ; +: AT-XY 6 PC! ( y ) 5 PC! ( x ) ; 380 LOAD ( xcomp core high ) (entry) _