⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 forthdef.h

📁 graspForth is my humble attempt at a Forth-in-C that has the following goals: GCC ......... to su
💻 H
字号:
//
// Macros to make programming in psuedo-Forth easier.
//
// Bernard Mentink
// 2004


// Shorthand macros for the address's of primitive code 
#define _NEXT 			(&&next)
#define _DOCOL		(&&docol)
#define _SEMI			(&&semi)
#define _DOLIT			(&&dolit)
#define _DOCON		(&&docon)
#define _DOCASE		(&&docase)
#define _EXECUTE	(&&execute)
#define _ATEXEC		(&&atexec)
#define _BRANCH 	(&&branch)
#define _ZBRANCH	 (&&zbranch)
#define _STORE 		(&&store)
#define _PSTORE		(&&pstore)
#define _FETCH 		(&&fetch)
#define _CSTORE		(&&cstore)
#define _CFETCH		(&&cfetch)
#define _RTO 			(&&rto)
#define _RFROM 		(&&rfrom)
#define _RFETCH		(&&rfetch)
#define _RPZ			(&&rpz)
#define _RPFETCH	(&&rpfetch)
#define _RPSTORE	(&&rpstore)
#define _SWAP 		(&&swap)
#define _DROP 		(&&drop)
#define _DUP 			(&&dup)
#define _QDUP			(&&qdup)
#define _SPZ			(&&spz)
#define _NIP				(&&nip)
#define _SPFETCH	(&&spfetch)
#define _SPSTORE	(&&spstore)
#define _OVER			(&&over)
#define _ROT			(&&rot)
#define _TXSTORE	(&&txstore)
#define _QRX			(&&qrx)
#define _ADD			(&&add)
#define _SUB			(&&sub)
#define _UADD			(&&uadd)
#define _USUB			(&&usub)
#define _MUL			(&&mul)
#define _DIV				(&&div)
#define _UMUL			(&&umul)
#define _UDIV			(&&udiv)
#define _MULDIV		(&&muldiv)
#define _UMULDIV	(&&umuldiv)
#define _TWOMUL	(&&twomul)
#define _TWODIV		(&&twodiv)
#define _LSHIFT		(&&lshift)
#define _RSHIFT		(&&rshift)
#define _ZERO			(&&zero)
#define _ONE			(&&one)
#define _TWO			(&&two)
#define _THREE		(&&three)
#define _NONE			(&&none)
#define _NTWO			(&&ntwo)
#define _NTHREE		(&&nthree)
#define _INVERT		(&&invert)
#define _NEGATE		(&&negate)
#define _MOD			(&&mod)
#define _UMOD			(&&umod)
#define _TRUEE		(&&truee)
#define _FALSEE		(&&falsee)
#define _EQ				(&&eq)
#define _ZEQ			(&&zeq)
#define _LT				(&&lt)
#define _ULT			(&&ult)
#define _ZLT				(&&zlt)
#define _GT				(&&gt)
#define _WITHIN		(&&within)
#define _MAX			(&&max)
#define _MIN			(&&min)
#define _AND			(&&and)
#define _OR				(&&or)
#define _XOR			(&&xor)
#define _NOT			(&&not)
#define _NAMEQ		(&&nameq)
#define _DONEXT		(&&donext)

// System and user variable address's
#define _TQKEY		(&tqkey)
#define _TEMIT		(&temit)
#define _TEXPECT	(&texpect)
#define _TTAP			(&ttap)
#define _TECHO		(&techo)
#define _TPROMPT	(&tprompt)
#define _TEVAL		(&teval)
#define _TNUMBER	(&tnumber)
#define _TBOOT		(&tboot)
#define _BASE			(&base)
#define _SPAN			(&span)
#define _IN				(&in)
#define _NTIB			(&ntib)
#define _HLD			(&hld)
#define _HANDLER	(&handler)
#define _CP				(&cp)
#define _NP				(&np)
#define _VP				(&vp)
#define _LAST			(&llast)
#define _VFRTH		(&vfrth)
#define _CURRENT	(&current)
#define _CURRENT_END	(&current_end) // point to next cell
#define _CONTEXT	(&context)
#define _CONTEXT_END	(&context_end)
#define _USER			(&user)
#define _TIB				(&tib)
#define _PAD			(&pad_end)
#define _TMP			(&tmp)
#define _CSP			(&csp)
#define _UP				(&up)

// All Words are stored in a  code-field-address table
// ( to enable 2-levels of indirection for ITC forth )
// Primitives
#define NEXT 			(&cfa[0])
#define DOCOL			(&cfa[1])
#define SEMI			(&cfa[2])
#define DOLIT			(&cfa[3])
#define DOCON		(&cfa[4])
#define DOCASE		(&cfa[5])
#define EXECUTE		(&cfa[6])
#define ATEXEC		(&cfa[7])
#define BRANCH 		(&cfa[8])
#define ZBRANCH	 	(&cfa[9])
#define STORE 		(&cfa[10])
#define PSTORE		(&cfa[11])
#define FETCH 		(&cfa[12])
#define CSTORE		(&cfa[13])
#define CFETCH		(&cfa[14])
#define RTO 			(&cfa[15])
#define RFROM 		(&cfa[16])
#define RFETCH		(&cfa[17])
#define RPZ				(&cfa[18])
#define RPFETCH		(&cfa[19])
#define RPSTORE	(&cfa[20])
#define SWAP 			(&cfa[21])
#define DROP 			(&cfa[22])
#define DUP 			(&cfa[23])
#define QDUP			(&cfa[24])
#define SPZ				(&cfa[25])
#define NIP				(&cfa[26])
#define SPFETCH		(&cfa[27])
#define SPSTORE	(&cfa[28])
#define OVER			(&cfa[29])
#define ROT				(&cfa[30])
#define TXSTORE		(&cfa[31])
#define QRX				(&cfa[32])
#define ADD				(&cfa[33])
#define SUB				(&cfa[34])
#define UADD			(&cfa[35])
#define USUB			(&cfa[36])
#define MUL				(&cfa[37])
#define DIV				(&cfa[38])
#define UMUL			(&cfa[39])
#define UDIV			(&cfa[40])
#define MULDIV		(&cfa[41])
#define UMULDIV		(&cfa[42])
#define TWOMUL		(&cfa[43])
#define TWODIV		(&cfa[44])
#define LSHIFT			(&cfa[45])
#define RSHIFT		(&cfa[46])
#define ZERO			(&cfa[47])
#define ONE				(&cfa[48])
#define TWO				(&cfa[49])
#define THREE			(&cfa[50])
#define NONE			(&cfa[51])
#define NTWO			(&cfa[52])
#define NTHREE		(&cfa[53])
#define INVERT		(&cfa[54])
#define NEGATE		(&cfa[55])
#define MOD				(&cfa[56])
#define UMOD			(&cfa[57])
#define TRUEE			(&cfa[58])
#define FALSEE		(&cfa[59])
#define EQ				(&cfa[60])
#define ZEQ				(&cfa[61])
#define LT				(&cfa[62])
#define ULT				(&cfa[63])
#define ZLT				(&cfa[64])
#define GT				(&cfa[65])
#define WITHIN			(&cfa[66])
#define MAX				(&cfa[67])
#define MIN				(&cfa[68])
#define AND				(&cfa[69])
#define OR				(&cfa[70])
#define XOR				(&cfa[71])
#define NOT				(&cfa[72])
#define NAMEQ		(&cfa[73])
#define DONEXT		(&cfa[74])

// System & User Variables
#define TQKEY			(&cfa[75])
#define TEMIT			(&cfa[79])
#define TEXPECT		(&cfa[83])
#define TTAP			(&cfa[87])
#define TECHO			(&cfa[91])
#define TPROMPT	(&cfa[95])
#define TEVAL			(&cfa[99])
#define TNUMBER	(&cfa[103])
#define BASE			(&cfa[107])
#define SPAN			(&cfa[111])
#define IN					(&cfa[115])
#define NTIB				(&cfa[119])
#define HLD				(&cfa[123])
#define HANDLER		(&cfa[127])
#define CP				(&cfa[131])
#define NP				(&cfa[135])
#define VP				(&cfa[139])
#define LAST			(&cfa[143])
#define VFRTH			(&cfa[147])
#define CURRENT		(&cfa[151])
#define USER			(&cfa[155])
#define TIB				(&cfa[159])
			

// Colon words.
#define EMIT			(&cfa[163])		
#define QKEY			(&cfa[167])
#define KEY				(&cfa[171])
#define ABS				(&cfa[176])
#define CELLP			(&cfa[183])
#define CELLM			(&cfa[188])
#define CELLS			(&cfa[193])
#define ALIGNED		(&cfa[198])
#define BLANK			(&cfa[212])
#define TOCHAR		(&cfa[216])
#define DEPTH			(&cfa[232])
#define PICK			(&cfa[242])
#define COUNT			(&cfa[250])
#define HERE			(&cfa[257])
#define PAD				(&cfa[261])
#define CMOVE		(&cfa[265])
#define FILL				(&cfa[283])
#define NTRAIL			(&cfa[297])
#define PACKS			(&cfa[317])
#define DIGIT			(&cfa[340])
#define UDIVMOD		(&cfa[353])	
#define EXTRACT		(&cfa[361])	
#define BDIGS			(&cfa[366])	
#define HOLD			(&cfa[371])	
#define DIG				(&cfa[381])	
#define DIGS			(&cfa[400])
#define SIGN			(&cfa[408])
#define EDIGS			(&cfa[416])
#define STR				(&cfa[424])
#define HEX				(&cfa[434])
#define DECIMAL		(&cfa[440])
#define DIGITQ			(&cfa[446])
#define DDROP			(&cfa[469])
#define NUMBERQ	(&cfa[473])
#define CR				(&cfa[556])
#define NUFQ			(&cfa[564])
#define PACE			(&cfa[575])
#define SPACE			(&cfa[580])
#define SPACES		(&cfa[584])
#define TYPES			(&cfa[594])
#define DOSTR			(&cfa[607])
#define STRQP			(&cfa[618])
#define DOTQP			(&cfa[621])
#define DOTR			(&cfa[626])
#define UDOTR			(&cfa[635])
#define UDOT			(&cfa[646])
#define UTYPE			(&cfa[653])
#define DOT				(&cfa[668])
#define QUEST			(&cfa[682])
#define PARS			(&cfa[686])
#define PARSE			(&cfa[767])
#define DOTPR			(&cfa[783])
#define PAREN			(&cfa[789])
#define BKSLA			(&cfa[795])
#define CHAR			(&cfa[801])
#define TOKEN			(&cfa[807])
#define WORDD		(&cfa[820])
#define NAMET			(&cfa[825])
#define BKSP			(&cfa[834])
#define TAP				(&cfa[857])
#define KTAP			(&cfa[866])
#define ACCEPT		(&cfa[888])
#define EXPECT		(&cfa[915])
#define QUERY			(&cfa[922])
#define CATCH			(&cfa[935])
#define THROW		(&cfa[952])
#define DOVAR			(&cfa[966])
#define DOVRAM		(&cfa[969])
#define NULLS			(&cfa[973])
#define ABORT			(&cfa[978])
#define ABORQ		(&cfa[981])
#define INTERP		(&cfa[989])
#define LBRAC			(&cfa[1011])
#define DOTOK			(&cfa[1017])
#define QSTACK		(&cfa[1029])
#define EVAL			(&cfa[1038])
#define PRESET		(&cfa[1053])
#define DSTORE 		(&cfa[1062])
#define DFETCH 		(&cfa[1069])
#define XIO				(&cfa[1076])
#define FILE				(&cfa[1084])
#define HAND			(&cfa[1093])
#define ISLO				(&cfa[1102])
#define CONSOLE	(&cfa[1106])
#define QUIT			(&cfa[1113])
#define DDUP			(&cfa[1150])
#define NOP				(&cfa[1154])
#define TEMP			(&cfa[1156])
#define TICK				(&cfa[1160])
#define ALLOT			(&cfa[1167])
#define COMMA		(&cfa[1171])
#define BCOMP		(&cfa[1179])
#define COMPILE		(&cfa[1183])
#define LITERAL		(&cfa[1191])
#define STRCQ			(&cfa[1196])
#define RECURSE	(&cfa[1206])
#define FORR			(&cfa[1212])
#define BEGIN			(&cfa[1217])
#define NEXT			(&cfa[1220])
#define UNTIL			(&cfa[1225])
#define AGAIN			(&cfa[1230])
#define IFF				(&cfa[1235])
#define AHEAD			(&cfa[1242])
#define REPEAT		(&cfa[1249])
#define THENN			(&cfa[1255])
#define AFT				(&cfa[1260])
#define ELSEE			(&cfa[1266])
#define WHILE			(&cfa[1271])
#define ABORTQ		(&cfa[1275])
#define STRQ			(&cfa[1280])
#define DOTQ			(&cfa[1285])
#define UNIQUE		(&cfa[1290])
#define SNAME		(&cfa[1303])
#define SCOMP		(&cfa[1331])
#define OVERT			(&cfa[1353])
#define SEMIS			(&cfa[1360])
#define RBRAC			(&cfa[1366])
#define COLON			(&cfa[1372])
#define IMMEDIATE	(&cfa[1380])
#define COMPON		(&cfa[1391])
#define HEADER		(&cfa[1402])
#define USER			(&cfa[1410])
#define CREATE		(&cfa[1417])
#define VARIABLE	(&cfa[1424])
#define CONSTANT	(&cfa[1436])
#define UTYPE			(&cfa[1443])
#define DUMPP		(&cfa[1457])
#define DUMP			(&cfa[1476])
#define DOTS			(&cfa[1511])
#define STCSP			(&cfa[1526])
#define QCSP			(&cfa[1531])
#define TNAME			(&cfa[1540])
#define DOTID			(&cfa[1573])
#define SEE				(&cfa[1588])
#define WORDS		(&cfa[1614])
#define CSP				(&cfa[1638])
#define UP				(&cfa[1642])
#define DOUSER		(&cfa[1646])
#define VERSION		(&cfa[1653])
#define TBOOT			(&cfa[1657])
#define HI					(&cfa[1661])
#define CONTEXT		(&cfa[1674])
#define FORTH			(&cfa[1678])
#define COLD			(&cfa[1683])
#define _COLD			(&cfa[1684])









⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -