From de7cb4a80f8ffd1e2df1ec42b9799f54a5fe9a51 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Wed, 28 Oct 2020 20:45:50 -0400 Subject: [PATCH] Add word A, This would be useful, for example, to allow the assembler to write straight to an AT28 EEPROM without going to RAM. This would be a life saver in machines with tight RAM such as the SMS. --- blk/007 | 4 ++-- blk/032 | 1 - blk/051 | 4 ++-- blk/363 | 2 +- blk/385 | 1 + blk/390 | 2 +- cvm/forth.bin | Bin 5186 -> 5200 bytes doc/impl.txt | 12 ++++++------ doc/usage.txt | 6 +++--- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/blk/007 b/blk/007 index 90c5817..e58362d 100644 --- a/blk/007 +++ b/blk/007 @@ -4,8 +4,8 @@ ; : PC H@ ORG @ - BIN( @ + ; ( A, spits an assembled byte, A,, spits an assembled word - Both increase PC. To debug, change C, to .X ) -: A, C, ; : A,, SPLITB A, A, ; + Both increase PC. ) +: A,, SPLITB A, A, ; : <<3 3 LSHIFT ; : <<4 4 LSHIFT ; ( As a general rule, IX and IY are equivalent to spitting an extra 0xdd / 0xfd and then spit the equivalent of HL ) diff --git a/blk/032 b/blk/032 index 0b7e1ae..f92d7c0 100644 --- a/blk/032 +++ b/blk/032 @@ -3,5 +3,4 @@ 256 /MOD SWAP ; : PC H@ ORG @ - BIN( @ + ; -: A, C, ; : A,, SPLITB A, A, ; diff --git a/blk/051 b/blk/051 index 448b789..be5ac92 100644 --- a/blk/051 +++ b/blk/051 @@ -6,5 +6,5 @@ VARIABLE L1 VARIABLE L2 VARIABLE L3 VARIABLE L4 ( We divide by 2 because each PC represents a word. ) : PC H@ ORG @ - 1 RSHIFT ; ( A, spits an assembled byte, A,, spits an assembled word - Both increase PC. To debug, change C, to .X ) -: A, C, ; : A,, SPLITB A, A, ; + Both increase PC. ) +: A,, SPLITB A, A, ; diff --git a/blk/363 b/blk/363 index 7369907..256bee0 100644 --- a/blk/363 +++ b/blk/363 @@ -4,7 +4,7 @@ SYSVARS 0x0c + :** C<* 0x08 RAM+ ( C<* override ) @ ?DUP NOT IF C<* ELSE EXECUTE THEN ; : , H@ ! H@ 2+ HERE ! ; -: C, H@ C! H@ 1+ HERE ! ; +: C, H@ C!+ HERE ! ; : ," BEGIN C< DUP 34 ( ASCII " ) = IF DROP EXIT THEN C, diff --git a/blk/385 b/blk/385 index 2bc6057..60dd886 100644 --- a/blk/385 +++ b/blk/385 @@ -5,6 +5,7 @@ ( Now, adev stuff ) SYSVARS 0x3e + :** A@ SYSVARS 0x40 + :** A! +SYSVARS 0x42 + :** A, ( src dst u -- ) : AMOVE diff --git a/blk/390 b/blk/390 index e6a29d7..fd1b233 100644 --- a/blk/390 +++ b/blk/390 @@ -7,7 +7,7 @@ ['] (emit) ['] EMIT **! ['] (key) ['] KEY **! ['] CRLF ['] NL **! ['] (boot<) ['] C<* **! - ['] C@ ['] A@ **! ['] C! ['] A! **! + ['] C@ ['] A@ **! ['] C! ['] A! **! ['] C, ['] A, **! ( boot< always has a char waiting. 06 == CY*FtH#l69UupK?NDb?L}eI?osahHX(r!w}d?_w@mNe#RvRmS=CyHgU=UKsNQPPL2 zE-o;sN3n?!dRyS+UmhN%>LPj!-LzJq=eOWg{(R}BFlZDW!xXqy^=|ZxNzpZs@eh?0 zXlr1>x-Jb-{M#cF^pa9m4eQ;1k%qam#9zf}OLqWNfp4onQ95a!eX*YktK*zLEevl| zU)LM3rORxq;)M4cro~O~5LU#d_l5D#ye(BO3nmsKpdjVK0o?WOdM&uh%~g+ z8te+wH{c?dNchenh-<#L2JiW#-vg32TO;U$8r=3#5jCOuCviud@E^yNc*FlJb>UQw{J)B9wggkkYPAhr0wbV&7+ssnq3?)fC@ z(28gh$@;G{iH=kKi>5>gLYKR!%^Y}>(EqeCuKUk`dhyCTS9U}o7#jL8U_m;uMje*} zpwa*|X#~=Vgb6M@5Kgd67v!Vh(f%^ON>}wS@)>j+4%~HYv$A*)j0V5wG=nQZGuUKw zGc&9$I>Gp0CDGd{Km^+)xXZ^5>`@Ajw W2puu^xlFV)w(Nl$UE{zL$$tQc(E+^x delta 1224 zcmYjQUuaup6hG(Y-rn!#-sIjSc3tef_D{$fQ)yT`=oVyYZkxu;jI_5oZG6cPhEUWgdr*fjLq;nD9~86?u5aQVHmc`KHt@oC@9&=P z_nmWo=X~c*>{d(zdOi&dE6;qPHB~c?N2N_vBnNGHu0OzUsb|$)^$|4S0gtjsX_PrQ z%4|4On3)KGOn4K+tO5_z1gPIbmbMxY$4y*Q8{ona{DF6+2JEW$Apw8ZV3aXz(y2I# z6CGI=1G*0zEphSASgtSU;;ds^%i@~B6bA? z|E`n(WgTqT(1pRlM_%Ee?UcMKSZ&3k8s?@be;HG@?gGdh-;jSJcfvf8>Lg)RoYqrZ zHynLKufdisyj|ua#&qv-qe9g^2KS!?YsyjBvmuqF@c9SF32Qv9x4!dOs$c9had7yqs-s*z0!T#Cr)@lNL1Ge z`iR{0k>2+|^bg}UAMqc?5q`mcg!=Wd|Iol9Mat)jrw)+HEfQ(90%YlWeCZbf#~_P- z>cK9ZF7v0&1$6kT8HsG^DPoJu<4`JdrVFfvtMu2=LN@=wjIV6zQ7~sIk@og1h`Q$s z>50KBRAvPB2rFx568?U?J7`nE+b3$RK1xK5S~jG|xJpwK853GLk$$u4pZrN^HInv1j$LQ?_ zifHroKw{-5%cb%kmtD9==(bOweOh5fAffw`D$rrleclo%PH2J9|0-d=>pubV+|pZ1 z+u8}x$6vj8@uk<6F7y_PU&&$RYQTnM{0g;SjEPKRQl~*l#^V-v$i}CFXRyQ@!QRd? zyF@qoAKEnOZambgctb7oUxQBY4x>?B1{&46N*8!s-QY$j)?EtLC?6X#`65kRg))mm zU9IAx+`|i@?yeuz3LKR_^E9cFf;ZIP1MgsguZBYSI{zs2ECv2HbTC#5irFm(VHIs^ q*0~M}-)`l2;p9{ +32 IN(* +70 DRIVERS +34 BLK@* +80 RAMEND diff --git a/doc/usage.txt b/doc/usage.txt index f3d5eaa..923e266 100644 --- a/doc/usage.txt +++ b/doc/usage.txt @@ -84,9 +84,9 @@ need switches in regular code. # Addressed devices -A@ and A! are the indirect versions of C@ and C!. They are -aliases and initially point to C@ and C!. There is also a AMOVE -word that is the same as MOVE but using A@ and A!. +A@, A! and A, are the indirect versions of C@, C! and C,. They +are switch words and initially point to C@, C! and C,. There is +also a AMOVE word that is the same as MOVE but using A@ and A!. Addressed device words can be useful to "pipe" processing to places outside of regular memory.