--- gforth/arch/misc/asm.fs 1998/03/08 23:47:00 1.2 +++ gforth/arch/misc/asm.fs 2004/12/31 13:23:59 1.7 @@ -1,14 +1,34 @@ \ PIE MISC assembler +\ Copyright (C) 1998,2000,2003,2004 Free Software Foundation, Inc. + +\ This file is part of Gforth. + +\ Gforth is free software; you can redistribute it and/or +\ modify it under the terms of the GNU General Public License +\ as published by the Free Software Foundation; either version 2 +\ of the License, or (at your option) any later version. + +\ This program is distributed in the hope that it will be useful, +\ but WITHOUT ANY WARRANTY; without even the implied warranty of +\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +\ GNU General Public License for more details. + +\ You should have received a copy of the GNU General Public License +\ along with this program; if not, write to the Free Software +\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + Vocabulary assembler also assembler also definitions forth +\ [IFUNDEF] cross +\ : X ; +\ [THEN] \ sources $0 Constant PC $1 Constant PC+2 $2 Constant PC+4 $3 Constant PC+6 -$7 Constant *ACCU $8 Constant ACCU $9 Constant SF $A Constant ZF $C Constant CF @@ -17,19 +37,22 @@ $A Constant ZF $C Constant CF $0 Constant JMP $1 Constant JS $2 Constant JZ $4 Constant JC +$7 Constant *ACCU ( $8 Constant ACCU ) $9 Constant SUB ( $A Constant SUBR ) $B Constant ADD $C Constant XOR $D Constant OR $E Constant AND $F Constant SHR -$FFFC Constant tx +$FFFC Constant txd +$FFFF Constant rx? +$FFFE Constant rxd \ $FFF0 Constant tx : end-label previous ; Create marks $10 cells allot -: ahere s" here" evaluate 2/ ; +: ahere X here 2/ ; : m ( n -- ) cells marks + ahere 2* swap ! 0 ; : r ( n -- ) cells marks + @ ahere swap s" !" evaluate 0 ; @@ -51,11 +74,18 @@ Create marks $10 cells allot r> $10 /string 0 max rot $10 + -rot REPEAT drop 2drop ; -: sym base @ >r hex - cr ." sym:s/PC=" ahere 4 0.r ." /" bl word count type ." /g" cr - r> base ! ; +\ : sym +\ base @ >r hex +\ cr ." sym:s/PC=" ahere 4 0.r ." /" bl word count type ." /g" cr +\ r> base ! ; +: sym bl word drop ; + +: label + >in @ bl word count X here symentry >in ! + ahere Constant ; -: label ahere Constant ; +: code + -1 ABORT" Need end-code or end-label before a new code definition" ; also forth definitions @@ -65,3 +95,4 @@ also forth definitions : (end-code) previous ; previous previous previous +