adding 6809 CamelForth microcomputer

This commit is contained in:
Fred VanEijk
2025-01-06 09:31:08 -05:00
parent 60339ca389
commit 9d554828fd
8 changed files with 1381 additions and 15 deletions

View File

@@ -328,9 +328,11 @@ set_global_assignment -name QIP_FILE Components/TERMINAL/DisplayRam2K.qip
set_global_assignment -name QIP_FILE Components/TERMINAL/CGABoldRomReduced.qip
set_global_assignment -name QIP_FILE ROMS/6809/M6809_EXT_BASIC_ROM.qip
set_global_assignment -name QIP_FILE ROMS/Z80/Z80_CPM_BASIC_ROM.qip
set_global_assignment -name QIP_FILE ROMS/6809/M6809_CAMELFORTH_ROM.qip
set_global_assignment -name VHDL_FILE MicrocomputerZ80CPM.vhd
set_global_assignment -name VHDL_FILE Microcomputer6502Basic.vhd
set_global_assignment -name VHDL_FILE Microcomputer6809Basic.vhd
set_global_assignment -name VHDL_FILE Microcomputer6809Forth.vhd
set_global_assignment -name VHDL_FILE MicrocomputerZ80Basic.vhd
set_global_assignment -name SIGNALTAP_FILE "output_files/status13-stp1.stp"
set_global_assignment -name SLD_FILE "db/status13-stp1_auto_stripped.stp"

View File

@@ -250,7 +250,7 @@ parameter CONF_STR = {
"S,IMG;",
"OF,Reset after Mount,No,Yes;",
"-;",
"O78,CPU-ROM,Z80-CP/M,Z80-BASIC,6502-Basic,6809-Basic;",
"O68,CPU-ROM,Z80-CP/M,Z80-BASIC,6502-Basic,6809-Basic,6809-Forth;",
"-;",
"O9B,Baud Rate tty,115200,38400,19200,9600,4800,2400;",
"OC,Serial Port,Console Port,User IO Port;",
@@ -501,8 +501,8 @@ assign user_cts_en = USER_OUT[3];
assign CLK_VIDEO = clk_sys;
typedef enum {cpuZ80CPM='b00, cpuZ80Basic='b01, cpu6502Basic='b10, cpu6809Basic='b11} cpu_type_enum;
wire [1:0] cpu_type = status[8:7];
typedef enum {cpuZ80CPM='b000, cpuZ80Basic='b001, cpu6502Basic='b010, cpu6809Basic='b011, cpu6809Forth='b100} cpu_type_enum;
wire [2:0] cpu_type = status[8:6];
typedef enum {baud115200='b000, baud38400='b001, baud19200='b010, baud9600='b011, baud4800='b100, baud2400='b101} baud_rate_enum;
wire [2:0] baud_rate = status[11:9];
@@ -512,16 +512,16 @@ wire hs, vs;
wire [1:0] r,g,b;
wire driveLED;
wire [3:0] _hblank, _vblank;
wire [3:0] _hs, _vs;
wire [1:0] _r[3:0], _g[3:0], _b[3:0];
wire [3:0] _driveLED;
wire [3:0] _CE_PIXEL;
wire [3:0] _SD_CS;
wire [3:0] _SD_MOSI;
wire [3:0] _SD_SCK;
wire [3:0] _txd;
wire [3:0] _rts; // RTS signals from CPUs
wire [4:0] _hblank, _vblank;
wire [4:0] _hs, _vs;
wire [1:0] _r[4:0], _g[4:0], _b[4:0];
wire [4:0] _driveLED;
wire [4:0] _CE_PIXEL;
wire [4:0] _SD_CS;
wire [4:0] _SD_MOSI;
wire [4:0] _SD_SCK;
wire [4:0] _txd;
wire [4:0] _rts; // RTS signals from CPUs
// Add baud rate selection logic
@@ -661,6 +661,32 @@ Microcomputer6809Basic Microcomputer6809Basic
.cts1(serial_cts)
);
Microcomputer6809Forth Microcomputer6809Forth
(
.N_RESET(~reset & cpu_type == cpu6809Forth),
.clk(cpu_type == cpu6809Forth ? clk_sys : 0),
.baud_increment(baud_increment),
.R(_r[cpu6809Forth][1:0]),
.G(_g[cpu6809Forth][1:0]),
.B(_b[cpu6809Forth][1:0]),
.HS(_hs[cpu6809Forth]),
.VS(_vs[cpu6809Forth]),
.hBlank(_hblank[cpu6809Forth]),
.vBlank(_vblank[cpu6809Forth]),
.cepix(_CE_PIXEL[cpu6809Forth]),
.ps2Clk(PS2_CLK),
.ps2Data(PS2_DAT),
.sdCS(_SD_CS[cpu6809Forth]),
.sdMOSI(_SD_MOSI[cpu6809Forth]),
.sdMISO(sdmiso),
.sdSCLK(_SD_SCK[cpu6809Forth]),
.driveLED(_driveLED[cpu6809Forth]),
.rxd1(serial_rx),
.txd1(_txd[cpu6809Forth]),
.rts1(_rts[cpu6809Forth]),
.cts1(serial_cts)
);
video_cleaner video_cleaner
(
.clk_vid(CLK_VIDEO),

678
README.md
View File

@@ -92,7 +92,7 @@ UART connected to serial interface 2 of the core. The latter allows to use the c
For more details on console connection, refer to the official MiSTer documentation:
[MiSTer Console Connection Guide](https://MiSTer-devel.github.io/MkDocs_MiSTer/advanced/console/)
## The MiSTer OSD allows the access to four machines
## The MiSTer OSD allows the access to five machines
### Z80 CP/M
@@ -213,6 +213,10 @@ LOG, SQR, HEX$, VARPTR, INSTR, STRING$, MID$ (MODIFICATION), POS
<http://searle.x10host.com/Multicomp/#BASICKeywords>
### 6809 Camel Forth
A 6809 implementation of Camel Forth
# MultiComp OSD Configuration
This section describes the On-Screen Display menu configuration for the MultiComp system, providing control over CPU selection, storage, and communication parameters.
@@ -232,6 +236,7 @@ This section describes the On-Screen Display menu configuration for the MultiCom
- Z80 with BASIC
- 6502 with BASIC
- 6809 with BASIC
- 6809 Forth
### Communication Settings
@@ -425,9 +430,680 @@ Grant Searle
| & | - | - | ✓ | Bitwise AND | `R = X & Y` |
Notes:
1. Z80 BASIC is the most commonly used version for CP/M systems
2. 6502 BASIC is a Microsoft BASIC variant
3. 6809 BASIC has the most extensive command set but lacks storage commands
4. None of the 6502 and 6809 variants support CSAVE/CLOAD operations
Each example shows the most common usage pattern for the command. Many commands have additional optional parameters or alternate syntaxes not shown in these basic examples.
# BASIC Programming Examples
A collection of example programs demonstrating various BASIC programming concepts and commands.
Some of these may only run on the 6809.
## Number Guessing Game
This program demonstrates input handling, loops, and conditional statements. The computer picks a random number and the player has 10 tries to guess it.
```basic
10 REM Number Guessing Game
20 CLS
30 PRINT "Number Guessing Game!"
40 LET N = INT(RND(1) * 100) + 1
50 LET TRIES = 0
60 PRINT "Guess a number between 1 and 100"
70 INPUT "Your guess: "; G
80 LET TRIES = TRIES + 1
90 IF G = N THEN GOTO 150
100 IF G < N THEN PRINT "Too low!"
110 IF G > N THEN PRINT "Too high!"
120 IF TRIES < 10 THEN GOTO 70
130 PRINT "Sorry, you've run out of tries. The number was"; N
140 GOTO 160
150 PRINT "Congratulations! You got it in"; TRIES; "tries!"
160 INPUT "Play again (Y/N)? "; A$
170 IF LEFT$(A$, 1) = "Y" OR LEFT$(A$, 1) = "y" THEN GOTO 40
180 END
```
Key concepts:
- Random number generation
- Input validation
- Conditional branching
- Loop control
- String comparison
## String Manipulation
This example demonstrates various string operations and functions available in BASIC.
```basic
10 REM String Manipulation Demo
20 LET A$ = "BASIC Programming"
30 PRINT "Original string: "; A$
40 PRINT "Length: "; LEN(A$)
50 PRINT "First 5 chars: "; LEFT$(A$, 5)
60 PRINT "Last 7 chars: "; RIGHT$(A$, 7)
70 PRINT "Middle 6 chars: "; MID$(A$, 7, 6)
80 FOR I = 1 TO LEN(A$)
90 PRINT MID$(A$, I, 1);
100 NEXT I
110 PRINT
120 END
```
Key concepts:
- String functions (LEN, LEFT$, RIGHT$, MID$)
- Character-by-character processing
- String concatenation
- FOR/NEXT loops with strings
## Math Functions Calculator
A simple calculator program that demonstrates mathematical functions and structured programming using subroutines.
```basic
10 REM Math Functions Calculator
20 PRINT "Math Functions Calculator"
30 PRINT "1. Square Root"
40 PRINT "2. Sine"
50 PRINT "3. Cosine"
60 PRINT "4. Tangent"
70 PRINT "5. Exit"
80 INPUT "Choose a function (1-5): "; C
90 IF C = 5 THEN END
100 INPUT "Enter a number: "; N
110 ON C GOSUB 200, 300, 400, 500
120 GOTO 20
200 PRINT "Square root of"; N; "is"; SQR(N)
210 RETURN
300 PRINT "Sine of"; N; "is"; SIN(N)
310 RETURN
400 PRINT "Cosine of"; N; "is"; COS(N)
410 RETURN
500 PRINT "Tangent of"; N; "is"; TAN(N)
510 RETURN
```
Key concepts:
- Subroutines with GOSUB/RETURN
- ON GOSUB branching
- Mathematical functions
- Menu-driven interface
## Array Operations
Demonstrates array handling, loops, and basic statistical calculations.
```basic
10 REM Array Operations
20 DIM A(10)
30 REM Fill array with numbers
40 FOR I = 1 TO 10
50 LET A(I) = I * 2
60 NEXT I
70 REM Calculate sum and average
80 LET S = 0
90 FOR I = 1 TO 10
100 LET S = S + A(I)
110 NEXT I
120 PRINT "Sum:"; S
130 PRINT "Average:"; S/10
140 REM Find maximum value
150 LET M = A(1)
160 FOR I = 2 TO 10
170 IF A(I) > M THEN LET M = A(I)
180 NEXT I
190 PRINT "Maximum value:"; M
200 END
```
Key concepts:
- Array declaration and initialization
- Array traversal
- Running sums
- Finding maximum values
- Basic statistics
## Simple Data Management
Shows how to work with DATA statements for storing and accessing program data.
```basic
10 REM Simple Data Management
20 DIM N$(5), A(5)
30 FOR I = 1 TO 5
40 READ N$(I), A(I)
50 NEXT I
60 REM Print all records
70 PRINT "Name", "Age"
80 PRINT "----", "---"
90 FOR I = 1 TO 5
100 PRINT N$(I), A(I)
110 NEXT I
120 DATA "John", 25, "Mary", 32, "Bob", 45, "Alice", 28, "Tom", 19
130 END
```
Key concepts:
- DATA statements
- READ operations
- Parallel arrays
- Formatted output
- String and numeric arrays
## Custom Function Definition
Demonstrates how to create and use user-defined functions.
```basic
10 REM Custom Function Demo
20 DEF FNC(X) = 5 * X^2 + 2 * X + 1
30 DEF FNF(X) = (X * 9/5) + 32
40 INPUT "Enter a number: "; N
50 PRINT "Quadratic result:"; FNC(N)
60 PRINT N; "Celsius ="; FNF(N); "Fahrenheit"
70 END
```
Key concepts:
- Function definition with DEF FN
- Mathematical expressions
- Temperature conversion
- Function parameter passing
Each of these examples can be extended or modified to create more complex programs. Note that some BASIC dialects may require slight modifications to these programs depending on the specific implementation.
# Forth Language Glossary
## Guide to Stack Diagrams
* `R:` = return stack
* `c` = 8-bit character
* `flag` = boolean (0 or -1)
* `n` = signed 16-bit
* `u` = unsigned 16-bit
* `d` = signed 32-bit
* `ud` = unsigned 32-bit
* `+n` = unsigned 15-bit
* `x` = any cell value
* `i*x j*x` = any number of cell values
* `a-addr` = aligned address
* `c-addr` = character address
* `p-addr` = I/O port address
* `sys` = system-specific
*Refer to ANS Forth document for more details.*
## Low-Level Words (Written in CODE)
### ANS Forth Core Words
These are required words whose definitions are specified by the ANS Forth document.
| Word | Stack Effect | Description |
|------|--------------|-------------|
| `!` | `x a-addr --` | Store cell in memory |
| `+` | `n1/u1 n2/u2 -- n3/u3` | Add n1+n2 |
| `+!` | `n/u a-addr --` | Add cell to memory |
| `-` | `n1/u1 n2/u2 -- n3/u3` | Subtract n1-n2 |
| `<` | `n1 n2 -- flag` | Test n1<n2, signed |
| `=` | `x1 x2 -- flag` | Test x1=x2 |
| `>` | `n1 n2 -- flag` | Test n1>n2, signed |
| `>R` | `x -- R: -- x` | Push to return stack |
| `?DUP` | `x -- 0 \| x x` | DUP if nonzero |
| `@` | `a-addr -- x` | Fetch cell from memory |
| `0<` | `n -- flag` | True if TOS negative |
| `0=` | `n/u -- flag` | Return true if TOS=0 |
| `1+` | `n1/u1 -- n2/u2` | Add 1 to TOS |
| `1-` | `n1/u1 -- n2/u2` | Subtract 1 from TOS |
| `2*` | `x1 -- x2` | Arithmetic left shift |
| `2/` | `x1 -- x2` | Arithmetic right shift |
| `AND` | `x1 x2 -- x3` | Logical AND |
| `CONSTANT` | `n --` | Define a Forth constant |
| `C!` | `c c-addr --` | Store char in memory |
| `C@` | `c-addr -- c` | Fetch char from memory |
| `DROP` | `x --` | Drop top of stack |
| `DUP` | `x -- x x` | Duplicate top of stack |
| `EMIT` | `c --` | Output character to console |
| `EXECUTE` | `i*x xt -- j*x` | Execute Forth word 'xt' |
| `EXIT` | `--` | Exit a colon definition |
| `FILL` | `c-addr u c --` | Fill memory with char |
| `I` | `-- n R: sys1 sys2 -- sys1 sys2` | Get the innermost loop index |
| `INVERT` | `x1 -- x2` | Bitwise inversion |
| `J` | `-- n R: 4*sys -- 4*sys` | Get the second loop index |
| `KEY` | `-- c` | Get character from keyboard |
| `LSHIFT` | `x1 u -- x2` | Logical L shift u places |
| `NEGATE` | `x1 -- x2` | Two's complement |
| `OR` | `x1 x2 -- x3` | Logical OR |
| `OVER` | `x1 x2 -- x1 x2 x1` | Per stack diagram |
| `ROT` | `x1 x2 x3 -- x2 x3 x1` | Per stack diagram |
| `RSHIFT` | `x1 u -- x2` | Logical R shift u places |
| `R>` | `-- x R: x --` | Pop from return stack |
| `R@` | `-- x R: x -- x` | Fetch from return stack |
| `SWAP` | `x1 x2 -- x2 x1` | Swap top two items |
| `UM*` | `u1 u2 -- ud` | Unsigned 16x16->32 mult. |
| `UM/MOD` | `ud u1 -- u2 u3` | Unsigned 32/16->16 div. |
| `UNLOOP` | `-- R: sys1 sys2 --` | Drop loop parameters |
| `U<` | `u1 u2 -- flag` | Test u1<n2, unsigned |
| `VARIABLE` | `--` | Define a Forth variable |
| `XOR` | `x1 x2 -- x3` | Logical XOR |
### ANS Forth Extensions
Optional words specified by the ANS Forth document.
| Word | Stack Effect | Description |
|------|--------------|-------------|
| `<>` | `x1 x2 -- flag` | Test not equal |
| `BYE` | `i*x --` | Return to CP/M |
| `CMOVE` | `c-addr1 c-addr2 u --` | Move from bottom |
| `CMOVE>` | `c-addr1 c-addr2 u --` | Move from top |
| `KEY?` | `-- flag` | Return true if char waiting |
| `M+` | `d1 n -- d2` | Add single to double |
| `NIP` | `x1 x2 -- x2` | Per stack diagram |
| `TUCK` | `x1 x2 -- x2 x1 x2` | Per stack diagram |
| `U>` | `u1 u2 -- flag` | Test u1>u2, unsigned |
### Private Extensions
Words unique to CamelForth.
| Word | Stack Effect | Description |
|------|--------------|-------------|
| `(DO)` | `n1\|u1 n2\|u2 -- R: -- sys1 sys2` | Run-time code for DO |
| `(LOOP)` | `R: sys1 sys2 -- \| sys1 sys2` | Run-time code for LOOP |
| `(+LOOP)` | `n -- R: sys1 sys2 -- \| sys1 sys2` | Run-time code for +LOOP |
| `><` | `x1 -- x2` | Swap bytes |
| `?BRANCH` | `x --` | Branch if TOS zero |
| `BDOS` | `DE C -- A` | Call CP/M BDOS |
| `BRANCH` | `--` | Branch always |
| `LIT` | `-- x` | Fetch inline literal to stack |
| `RP!` | `a-addr --` | Set return stack pointer |
| `RP@` | `-- a-addr` | Get return stack pointer |
| `SCAN` | `c-addr1 u1 c -- c-addr2 u2` | Find matching char |
| `SKIP` | `c-addr1 u1 c -- c-addr2 u2` | Skip matching chars |
| `SP!` | `a-addr --` | Set data stack pointer |
| `SP@` | `-- a-addr` | Get data stack pointer |
| `S=` | `c-addr1 c-addr2 u -- n` | String compare (n<0: s1<s2, n=0: s1=s2, n>0: s1>s2) |
| `USER` | `n --` | Define user variable 'n' |
## High-Level Words
### ANS Forth Core Words
These are required words whose definitions are specified by the ANS Forth document.
| Word | Stack Effect | Description |
|------|--------------|-------------|
| `#` | `ud1 -- ud2` | Convert 1 digit of output |
| `#S` | `ud1 -- ud2` | Convert remaining digits |
| `#>` | `ud1 -- c-addr u` | End conversion, get string |
| `'` | `-- xt` | Find word in dictionary |
| `(` | `--` | Skip input until ) |
| `*` | `n1 n2 -- n3` | Signed multiply |
| `*/` | `n1 n2 n3 -- n4` | n1*n2/n3 |
| `*/MOD` | `n1 n2 n3 -- n4 n5` | n1*n2/n3, rem & quot |
| `+LOOP` | `adrs -- L: 0 a1 a2 .. aN --` | |
| `,` | `x --` | Append cell to dict |
| `/` | `n1 n2 -- n3` | Signed divide |
| `/MOD` | `n1 n2 -- n3 n4` | Signed divide, rem & quot |
| `:` | `--` | Begin a colon definition |
| `;` | | End a colon definition |
| `<#` | `--` | Begin numeric conversion |
| `>BODY` | `xt -- a-addr` | Address of param field |
| `>IN` | `-- a-addr` | Holds offset into TIB |
| `>NUMBER` | `ud adr u -- ud' adr' u'` | Convert string to number |
| `2DROP` | `x1 x2 --` | Drop 2 cells |
| `2DUP` | `x1 x2 -- x1 x2 x1 x2` | Dup top 2 cells |
| `2OVER` | `x1 x2 x3 x4 -- x1 x2 x3 x4 x1 x2` | Per diagram |
| `2SWAP` | `x1 x2 x3 x4 -- x3 x4 x1 x2` | Per diagram |
| `2!` | `x1 x2 a-addr --` | Store 2 cells |
| `2@` | `a-addr -- x1 x2` | Fetch 2 cells |
| `ABORT` | `i*x -- R: j*x --` | Clear stack & QUIT |
| `ABORT"` | `i*x 0 -- i*x R: j*x -- j*x` | Print msg & abort if x1<>0 |
| `ABS` | `n1 -- +n2` | Absolute value |
| `ACCEPT` | `c-addr +n -- +n'` | Get line from terminal |
| `ALIGN` | `--` | Align HERE |
| `ALIGNED` | `addr -- a-addr` | Align given addr |
| `ALLOT` | `n --` | Allocate n bytes in dict |
| `BASE` | `-- a-addr` | Holds conversion radix |
| `BEGIN` | `-- adrs` | Target for backward branch |
| `BL` | `-- char` | An ASCII space |
| `C,` | `char --` | Append char to dict |
| `CELLS` | `n1 -- n2` | Cells->adrs units |
| `CELL+` | `a-addr1 -- a-addr2` | Add cell size to adrs |
| `CHAR` | `-- char` | Parse ASCII character |
| `CHARS` | `n1 -- n2` | Chars->adrs units |
| `CHAR+` | `c-addr1 -- c-addr2` | Add char size to adrs |
| `COUNT` | `c-addr1 -- c-addr2 u` | Counted->adr/len |
| `CR` | `--` | Output newline |
| `CREATE` | `--` | Create an empty definition |
| `DECIMAL` | `--` | Set number base to decimal |
| `DEPTH` | `-- +n` | Number of items on stack |
| `DO` | `-- adrs L: -- 0` | Start of DO..LOOP |
| `DOES>` | `--` | Change action of latest def'n |
| `ELSE` | `adrs1 -- adrs2` | Branch for IF..ELSE |
| `ENVIRONMENT?` | `c-addr u -- false` | System query |
| `EVALUATE` | `i*x c-addr u -- j*x` | Interpret string |
| `FIND` | `c-addr -- c-addr 0` | If name not found |
| | `xt 1` | If immediate |
| | `xt -1` | If "normal" |
| `FM/MOD` | `d1 n1 -- n2 n3` | Floored signed division |
| `HERE` | `-- addr` | Returns dictionary pointer |
| `HOLD` | `char --` | Add char to output string |
| `IF` | `-- adrs` | Conditional forward branch |
| `IMMEDIATE` | `--` | Make last def'n immediate |
| `LEAVE` | `-- L: -- adrs` | Exit DO..LOOP |
| `LITERAL` | `x --` | Append numeric literal to dict |
| `LOOP` | `adrs -- L: 0 a1 a2 .. aN --` | |
| `MAX` | `n1 n2 -- n3` | Signed maximum |
| `MIN` | `n1 n2 -- n3` | Signed minimum |
| `MOD` | `n1 n2 -- n3` | Signed remainder |
| `MOVE` | `addr1 addr2 u --` | Smart move |
| `M*` | `n1 n2 -- d` | Signed 16*16->32 multiply |
| `POSTPONE` | `--` | Postpone compile action of word |
| `QUIT` | `-- R: i*x --` | Interpret from keyboard |
| `RECURSE` | `--` | Recurse current definition |
| `REPEAT` | `adrs1 adrs2 --` | Resolve WHILE loop |
| `SIGN` | `n --` | Add minus sign if n<0 |
| `SM/REM` | `d1 n1 -- n2 n3` | Symmetric signed division |
| `SOURCE` | `-- adr n` | Current input buffer |
| `SPACE` | `--` | Output a space |
| `SPACES` | `n --` | Output n spaces |
| `STATE` | `-- a-addr` | Holds compiler state |
| `S"` | `--` | Compile in-line string |
| `."` | `--` | Compile string to print |
| `S>D` | `n -- d` | Single -> double precision |
| `THEN` | `adrs --` | Resolve forward branch |
| `TYPE` | `c-addr +n --` | Type line to terminal |
| `UNTIL` | `adrs --` | Conditional backward branch |
| `U.` | `u --` | Display u unsigned |
| `.` | `n --` | Display n signed |
| `WHILE` | `-- adrs` | Branch for WHILE loop |
| `WORD` | `char -- c-addr n` | Parse word delim by char |
| `[` | `--` | Enter interpretive state |
| `[CHAR]` | `--` | Compile character literal |
| `[']` | `--` | Find word & compile as literal |
| `]` | `--` | Enter compiling state |
### ANS Forth Extensions
Optional words specified by the ANS Forth document.
| Word | Stack Effect | Description |
|------|--------------|-------------|
| `.S` | `--` | Print stack contents |
| `/STRING` | `a u n -- a+n u-n` | Trim string |
| `AGAIN` | `adrs --` | Uncond'l backward branch |
| `COMPILE,` | `xt --` | Append execution token |
| `DABS` | `d1 -- +d2` | Absolute value, dbl.prec. |
| `DNEGATE` | `d1 -- d2` | Negate, double precision |
| `HEX` | `--` | Set number base to hex |
| `PAD` | `-- a-addr` | User PAD buffer |
| `TIB` | `-- a-addr` | Terminal Input Buffer |
| `WITHIN` | `n1\|u1 n2\|u2 n3\|u3 -- f` | Test n2<=n1<n3? |
| `WORDS` | `--` | List all words in dict. |
### Private Extensions
Words unique to CamelForth.
| Word | Stack Effect | Description |
|------|--------------|-------------|
| `!CF` | `adrs cfa --` | Set code action of a word |
| `!COLON` | `--` | Change code field to docolon |
| `!DEST` | `dest adrs --` | Change a branch dest'n |
| `#INIT` | `-- n` | #bytes of user area init data |
| `'SOURCE` | `-- a-addr` | Two cells: len, adrs |
| `(DOES>)` | `--` | Run-time action of DOES> |
| `(S")` | `-- c-addr u` | Run-time code for S" |
| `,BRANCH` | `xt --` | Append a branch instruction |
| `,CF` | `adrs --` | Append a code field |
| `,DEST` | `dest --` | Append a branch address |
| `,EXIT` | `--` | Append hi-level EXIT action |
| `>COUNTED` | `src n dst --` | Copy to counted str |
| `>DIGIT` | `n -- c` | Convert to 0..9A..Z |
| `>L` | `x -- L: -- x` | Move to Leave stack |
| `?ABORT` | `f c-addr u --` | Abort & print msg |
| `?DNEGATE` | `d1 n -- d2` | Negate d1 if n negative |
| `?NEGATE` | `n1 n2 -- n3` | Negate n1 if n2 negative |
| `?NUMBER` | `c-addr -- n -1` | Convert string->number |
| | `-- c-addr 0` | If convert error |
| `?SIGN` | `adr n -- adr' n' f` | Get optional sign |
| `CELL` | `-- n` | Size of one cell |
| `COLD` | `--` | Cold start Forth system |
| `COMPILE` | `--` | Append inline execution token |
| `DIGIT?` | `c -- n -1` | If c is a valid digit |
| | `-- x 0` | Otherwise |
| `DP` | `-- a-addr` | Holds dictionary ptr |
| `ENDLOOP` | `adrs xt -- L: 0 a1 a2 .. aN --` | |
| `HIDE` | `--` | "hide" latest definition |
| `HP` | `-- a-addr` | HOLD pointer |
| `IMMED?` | `nfa -- f` | Fetch immediate flag |
| `INTERPRET` | `i*x c-addr u -- j*x` | Interpret given buffer |
| `L0` | `-- a-addr` | Bottom of Leave stack |
| `LATEST` | `-- a-addr` | Last word in dictionary |
| `LP` | `-- a-addr` | Leave-stack pointer |
| `L>` | `-- x L: x --` | Move from Leave stack |
| `NFA>CFA` | `nfa -- cfa` | Name adr -> code field |
| `NFA>LFA` | `nfa -- lfa` | Name adr -> link field |
| `R0` | `-- a-addr` | End of return stack |
| `REVEAL` | `--` | "reveal" latest definition |
| `S0` | `-- a-addr` | End of parameter stack |
| `TIBSIZE` | `-- n` | Size of TIB |
| `U0` | `-- a-addr` | Current user area adrs |
| `UD*` | `ud1 d2 -- ud3` | 32*16->32 multiply |
| `UD/MOD` | `ud1 u2 -- u3 ud4` | 32/16->32 divide |
| `UINIT` | `-- addr` | Initial values for user area |
| `UMAX` | `u1 u2 -- u` | Unsigned maximum |
| `UMIN` | `u1 u2 -- u` | Unsigned minimum |
# Forth Programming Examples
Here is the quintessential introduction to Forth, originating from the era of early 8-bit personal computers.
https://www.forth.com/starting-forth/
## 1. Basic Stack Manipulation
```forth
\ Example of basic stack operations
5 3 2 \ Put three numbers on the stack
.S \ Print stack contents -- output: 5 3 2
DUP \ Duplicate top number
.S \ Stack now: 5 3 2 2
SWAP \ Swap top two numbers
.S \ Stack now: 5 3 2 2
DROP \ Remove top number
. \ Print top number
CR \ Carriage return (newline)
```
## 2. Simple Calculator
```forth
\ Definition for squaring a number
: SQUARE ( n -- n^2 )
DUP *
;
\ Definition for cube
: CUBE ( n -- n^3 )
DUP SQUARE *
;
\ Example usage
5 SQUARE . \ Outputs: 25
3 CUBE . \ Outputs: 27
\ Basic arithmetic calculator
: CALCULATE ( n1 n2 -- )
2DUP + ." Sum: " . CR
2DUP - ." Difference: " . CR
2DUP * ." Product: " . CR
SWAP DUP 0= IF
DROP DROP ." Division by zero! " CR
ELSE
/ ." Quotient: " . CR
THEN
;
10 5 CALCULATE
```
## 3. String Handling
```forth
\ Print a string
: GREET ( -- )
." Hello, Forth Programmer!" CR
;
\ Count characters in a string
: COUNT-CHARS ( addr u -- n )
0 DO
1+
LOOP
;
\ Example of string comparison
: SAME-STRING? ( addr1 u1 addr2 u2 -- flag )
ROT SWAP \ Reorder parameters
S= \ Compare strings
0= \ Convert to boolean
;
```
## 4. Simple Loop Examples
```forth
\ Print numbers from 1 to n
: COUNT-TO ( n -- )
1+ 1 DO
I .
SPACE
LOOP
CR
;
\ Print a multiplication table
: TIMES-TABLE ( n -- )
CR
." Multiplication table for " DUP . CR
11 1 DO
DUP I * .
SPACE
LOOP
DROP
CR
;
\ Example usage:
5 COUNT-TO \ Prints: 1 2 3 4 5
7 TIMES-TABLE \ Prints multiplication table for 7
```
## 5. Memory Operations
```forth
\ Create a variable
VARIABLE COUNT
0 COUNT ! \ Initialize to 0
\ Increment counter
: INC-COUNT ( -- )
1 COUNT +!
;
\ Reset counter
: RESET-COUNT ( -- )
0 COUNT !
;
\ Show counter
: SHOW-COUNT ( -- )
." Counter: "
COUNT @ .
CR
;
\ Example usage:
SHOW-COUNT \ Shows: Counter: 0
INC-COUNT
INC-COUNT
SHOW-COUNT \ Shows: Counter: 2
RESET-COUNT
SHOW-COUNT \ Shows: Counter: 0
```
## 6. Simple Data Structure (Stack)
```forth
\ Implementation of a small stack (max 10 items)
CREATE STACK 10 CELLS ALLOT
VARIABLE STACK-PTR
0 STACK-PTR !
: STACK-PUSH ( n -- )
STACK-PTR @ 9 > IF
." Stack overflow! " DROP
ELSE
STACK-PTR @ CELLS STACK + !
1 STACK-PTR +!
THEN
;
: STACK-POP ( -- n )
STACK-PTR @ 0= IF
." Stack underflow! " 0
ELSE
-1 STACK-PTR +!
STACK-PTR @ CELLS STACK + @
THEN
;
\ Example usage:
5 STACK-PUSH
10 STACK-PUSH
STACK-POP . \ Outputs: 10
STACK-POP . \ Outputs: 5
```
## 7. Conditional Examples
```forth
\ Check if a number is positive, negative, or zero
: CHECK-NUMBER ( n -- )
DUP 0= IF
." Number is zero" CR DROP
ELSE
DUP 0< IF
." Number is negative" CR DROP
ELSE
." Number is positive" CR DROP
THEN
THEN
;
\ Example usage:
5 CHECK-NUMBER \ Outputs: Number is positive
-3 CHECK-NUMBER \ Outputs: Number is negative
0 CHECK-NUMBER \ Outputs: Number is zero
```
These examples demonstrate basic Forth programming concepts including:
- Stack manipulation
- Arithmetic operations
- String handling
- Loops and iteration
- Memory operations
- Simple data structures
- Conditional statements
Each example includes comments explaining the operations and expected output. Remember that Forth is a stack-based language, so understanding stack manipulation is crucial for writing effective programs.

View File

@@ -0,0 +1,513 @@
:100000000000034B45593406F6FFD0C40127F9F62A
:10001000FFD14F6EB1E002044B45593F34064FF615
:10002000FFD0C4012702C6FF6EB1E01704454D4959
:1000300054B6FFD0840227F9F7FFD135066EB136EA
:100040002035206EB1351034061F106EB1E02C043F
:100050004558495437206EB1E04F034C495434069B
:10006000ECA16EB1E05A07455845435554451F0170
:1000700035066E84E0660344555034066EB1E07672
:10008000043F44555010830000270234066EB1E04F
:10009000800444524F5035066EB1E09104535741ED
:1000A00050AEE4EDE41F106EB1E09C044F56455293
:1000B0003406EC626EB1E0AB03524F54AEE4EDE4B3
:1000C000EC62AF626EB1E0B8034E495032626EB17D
:1000D000E0C8045455434BAEE4EDE434106EB1E097
:1000E000D2045049434B5849ECEB6EB1E0E1023E7B
:1000F00052360635066EB1E0EE02523E3406370641
:100100006EB1E0F90252403406ECC46EB1E1040372
:1001100053504034061F406EB1E10F035350211F6E
:100120000435066EB1E11B0352504034061F306E99
:10013000B1E127035250211F0335066EB1E13301AF
:10014000211F013506ED8435066EB1E13F024321E2
:100150001F013506E78435066EB1E14D01401F01F0
:10016000EC846EB1E15C0243401F01E6844F6EB146
:10017000E166012BE3E16EB1E172024D2BE362ED2A
:10018000623506C90089006EB1E17A012DA3E14311
:1001900053C300016EB1E18B064E454741544543C0
:1001A00053C300016EB1E19803414E44A4E0E4E082
:1001B0006EB1E1A8024F52AAE0EAE06EB1E1B403E9
:1001C000584F52A8E0E8E06EB1E1BF06494E5645EF
:1001D000525443536EB1E1CB023E3C1E896EB1E1F5
:1001E000D802312BC300016EB1E1E102312D830051
:1001F000016EB1E1EB02322A58496EB1E1F50232EB
:100200002F47566EB1E1FE022B211F013506E38414
:10021000ED8435066EB1E207064C53484946541F3B
:10022000013506308427065849301F26FA6EB1E2A0
:1002300018065253484946541F0135063084270694
:100240004456301F26FA6EB1E23102303D10830071
:10025000002605CCFFFF6EB14F5F6EB1E24A02305F
:100260003C4D2BEF4F5F6EB1E25E013DA3E127E312
:100270004F5F6EB1E26A023C3EA3E126D64F5F6E4D
:10028000B1E276013CA3E12ECA4F5F6EB1E2830179
:100290003EA3E12DBE4F5F6EB1E28F02553CA3E15C
:1002A00022B14F5F6EB1E29B02553EA3E125A44F00
:1002B0005F6EB1E2A8064252414E434810AEA46EB2
:1002C000B1E2B5073F4252414E4348108300002639
:1002D00007350610AEA46EB1350631226EB1E2C309
:1002E0000428444F291F01CC8000A3E13606308B3F
:1002F000361035066EB1E2E006554E4C4F4F503386
:10030000446EB1E2F806284C4F4F50293406ECC435
:10031000C300012909EDC410AEA435066EB1312227
:10032000334435066EB1E30507282B4C4F4F502957
:10033000E3C428E13122334435066EB1E328014994
:100340003406ECC4A3426EB1E33E014A3406EC44E9
:10035000A3466EB1E34A03554D2A3416A665E661FD
:100360003DED62A664E6613DEB628900ED61A66544
:10037000E6E43DE361ED614F49E6E4A7E4A6643DB0
:10038000E3E4AE623264AFE46EB1E35606554D2F3E
:100390004D4F4434068E0010686569646963696274
:1003A000EC622408A3E4ED621CFE2006A3E425020F
:1003B000ED6269656964301F26E2EC644353AE6206
:1003C000AF6432646EB1E38C0446494C4C36203540
:1003D000308C00002706E7A0301F26FA35063720AC
:1003E0006EB1E3C802533DE362AE6210AF6210AE7D
:1003F000E4EDE45FACE42712A680A0A0270AC200C7
:100400001F98CA0135306EB120EA1F9835306EB1A1
:10041000E3E405434D4F5645E362AE6210AF621010
:10042000AEE4EDE4ACE42706E680E7A020F6353044
:1004300035066EB1E41206434D4F56453EAE62306E
:100440008B10AF6210AEE431AB10ACE42706E6824D
:10045000E7A220F5353035066EB1313F34201F104C
:1004600037206EB1E43604534B4950362035308C7A
:1004700000002708E1A026E2301F26F820DEE4660F
:10048000045343414E362035308C00002708E1A04C
:1004900027C8301F26F820C4E48007414C49474E46
:1004A00045446EB1E49A05414C49474E6EB1E4A60D
:1004B0000543454C4C2BC300026EB1E4B0054345E7
:1004C0004C4C5358496EB1E4BD05434841522BC3CF
:1004D00000016EB1E4C90543484152536EB1E4D600
:1004E000053E424F4459C300036EB1E4E008434F58
:1004F0004D50494C452CBDE03FED2DE054E4ED035B
:10050000214346BDE03FE05E00BDE0B0E150E1E4E4
:10051000E141E054E4FF032C4346BDE03FED0FE52D
:1005200003E05E0003ED20E054E5160621434F4C46
:100530004F4EBDE03FE05EFFFDED20E05EE03FE5B9
:100540001AE054E52B052C45584954BDE03FE05EC8
:10055000E054E4F6E054E545072C4252414E43484E
:10056000BDE03FED2DE054E558052C44455354BD06
:10057000E03FED2DE054E569052144455354BDE0CD
:100580003FE141E05436203520351034061F106E0F
:10059000B1E5780728444F45533E29BDE03FE0FCD4
:1005A000E809E15EEE08E503E054E59345444F4574
:1005B000533EBDE03FE05EE59BE4F6E05EE585E5A9
:1005C0001AE054E5AC013ABDE03FF161F1C2F1AE91
:1005D000E532E054E5C5413BBDE03FF1E2E54BF1DA
:1005E0009DE054E5D608434F4E5354414E54BDE070
:1005F0003FF161ED2DE59B35103406EC846EB1E5DD
:10060000E5085641524941424C45BDE03FF161E7A2
:1006100084ED20E054E6010455534552BDE03FF11E
:1006200061ED2DE59B351034061FB85FE3846EB194
:10063000E617424946BDE03FE05EE2CBE560ED0FE4
:10064000E07AE56FE054E632445448454EBDE03F61
:10065000ED0FE0A1E57EE054E64844454C5345BD2E
:10066000E03FE05EE2BCE560ED0FE07AE56FE0A11F
:10067000E64DE054E65A45424547494EBDE03FED60
:100680000FE054E67645554E54494CBDE03FE05EE0
:10069000E2CBE560E56FE054E68545414741494ED0
:1006A000BDE03FE05EE2BCE560E56FE054E69A4500
:1006B0005748494C45BDE03FE635E054E6AF465269
:1006C0004550454154BDE03FE0A1E6A0E64DE05471
:1006D000E6BE023E4CBDE03FE784E844E20AE8445F
:1006E000E15EE141E054E6D2024C3EBDE03FE84429
:1006F000E15EE15EE784E19FE844E20AE054E6E877
:1007000042444FBDE03FE05EE2E5E560ED0FE05EB4
:100710000000E6D5E054E700454C45415645BDE0B4
:100720003FE05EE2FFE4F6E05EE2BCE560ED0FE094
:100730007AE56FE6D5E054E71807454E444C4F4F35
:1007400050BDE03FE560E56FE6EBE085E2CBE756C4
:10075000E64DE2BCE748E054E739444C4F4F50BD0A
:10076000E03FE05EE30CE741E054E75A452B4C4F95
:100770004F50BDE03FE05EE330E741E054E76C04FA
:1007800043454C4CBDE5F70002E77F02424CBDE516
:10079000F70020E78B0754494253495A45BDE5F716
:1007A000007EE79503544942BDE625FF80E7A40299
:1007B0005530BDE6250000E7AF0442415345BDE694
:1007C000250002E7B9024450BDE6250004E7C50351
:1007D000424C4BBDE6250006E7CF03534352BDE62E
:1007E000250008E7DA07424C4B41445253BDE62549
:1007F000000AE7E506425354415445BDE625000E84
:10080000E7F4064C4154455354BDE6250018E80270
:10081000033E494EBDE625001AE8100553544154E5
:1008200045BDE625001CE81B0727534F555243459D
:10083000BDE625001EE828024850BDE6250022E856
:1008400037024C50BDE6250024E841025330BDE696
:10085000250100E84B03504144BDE6250128E85539
:10086000024C30BDE6250180E860025230BDE6252D
:100870000200E86A03533E44BDE03FE07AE261E0F3
:1008800054E874073F4E4547415445BDE03FE2619F
:10089000E2CBE896E19FE054E88303414253BDE098
:1008A0003FE07AE88BE054E89A07444E45474154CC
:1008B00045BDE03FE0A1E1D2E0A1E1D2E05E000170
:1008C000E17DE054E8A9083F444E4547415445BD09
:1008D000E03FE261E2CBE8DAE8B1E054E8C6044484
:1008E000414253BDE03FE07AE8CFE054E8DE024DFC
:1008F0002ABDE03FEA34E1C3E0F1E0A1E89EE0A1D7
:10090000E89EE35AE0FCE8CFE054E8EE06534D2FB2
:1009100052454DBDE03FEA34E1C3E0F1E0B0E0F123
:10092000E89EE0F1E8E3E0FCE393E0A1E0FCE88B83
:10093000E0A1E0FCE88BE054E90C06464D2F4D4F5A
:1009400044BDE03FE07AE0F1E913E07AE261E2CB16
:10095000E960E0A1E0FCE174E0A1E1EEE2BCE96461
:10096000E0FCE096E054E93A012ABDE03FE8F1E01E
:1009700096E054E968042F4D4F44BDE03FE0F1E8B4
:1009800078E0FCE941E054E975012FBDE03FE97AE8
:10099000E0CCE054E989034D4F44BDE03FE97AE003
:1009A00096E054E996052A2F4D4F44BDE03FE0F113
:1009B000E8F1E0FCE941E054E9A5022A2FBDE03F5F
:1009C000E9ABE0CCE054E9BA034D4158BDE03FEA61
:1009D00034E285E2CBE9D9E0A1E096E054E9C8032E
:1009E0004D494EBDE03FEA34E291E2CBE9F0E0A1AF
:1009F000E096E054E9DF023240BDE03FE07AE4B641
:100A0000E15EE0A1E15EE054E9F6023221BDE03FA3
:100A1000E0A1E0B0E141E4B6E141E054EA0A053288
:100A200044524F50BDE03FE096E096E054EA1E0489
:100A300032445550BDE03FE0B0E0B0E054EA2F054D
:100A40003253574150BDE03FE0BCE0F1E0BCE0FC78
:100A5000E054EA3F05324F564552BDE03FE0F1E039
:100A6000F1EA34E0FCE0FCEA45E054EA5405434F87
:100A7000554E54BDE03FE07AE4CFE0A1E169E05497
:100A8000EA6D024352BDE03FE05E000DE031E05E02
:100A9000000AE031E054EA82055350414345BDE08D
:100AA0003FE78EE031E054EA980653504143455306
:100AB000BDE03FE07AE2CBEAC1EA9EE1EEE2BCEAC9
:100AC000B3E096E054EAA904554D494EBDE03FEA33
:100AD00034E2ABE2CBEAD9E0A1E096E054EAC70405
:100AE000554D4158BDE03FEA34E29EE2CBEAF1E0E9
:100AF000A1E096E054EADF06414343455054BDE08F
:100B00003FE0B0E174E1EEE0B0E006E07AE05E00E4
:100B10000DE279E2CBEB45E07AE031E07AE05E008D
:100B200008E26CE2CBEB37E096E1EEE0F1E0B0E01A
:100B3000FCEAE4E2BCEB41E0B0E150E1E4E0B0EA21
:100B4000CCE2BCEB09E096E0CCE0A1E18DE054EA18
:100B5000F70454595045BDE03FE085E2CBEB75E02A
:100B6000B0E174E0A1E2E5E340E169E031E30CEBE0
:100B700067E2BCEB77E096E054EB5104285322295E
:100B8000BDE03FE0FCEA73EA34E174E4ACE0F1E09C
:100B900054EB7B425322BDE03FE05EEB80E4F6E0A5
:100BA0005E0022EDA2E169E1E4E4A2ED20E054EB75
:100BB00093422E22BDE03FEB96E05EEB56E4F6E07A
:100BC00054EBB10655442F4D4F44BDE03FE0F1E0FA
:100BD0005E0000E107E393E0BCE0BCE0FCE393E0EF
:100BE000BCE054EBC30355442ABDE03FE07AE0F19A
:100BF000E35AE096E0A1E0FCE35AE0BCE174E05483
:100C0000EBE504484F4C44BDE03FE05EFFFFE83AAF
:100C1000E20AE83AE15EE150E054EC02023C23BD16
:100C2000E03FE859E83AE141E054EC1C063E444913
:100C3000474954BDE03FE07AE05E0009E291E05EA2
:100C40000007E1ACE174E05E0030E174E054EC2CAC
:100C50000123BDE03FE7BEE15EEBCAE0BCEC33EC54
:100C600007E054EC50022353BDE03FEC52EA34E17C
:100C7000B7E24DE2CBEC6BE054EC6502233EBDE005
:100C80003FEA24E83AE15EE859E0B0E18DE054EC57
:100C90007B045349474EBDE03FE261E2CBECA5E067
:100CA0005E002DEC07E054EC9102552EBDE03FECC8
:100CB0001FE05E0000EC68EC7EEB56EA9EE054EC30
:100CC000A9012EBDE03FEC1FE07AE89EE05E000047
:100CD000EC68E0BCEC96EC7EEB56EA9EE054ECC18E
:100CE00007444543494D414CBDE03FE05E000AE703
:100CF000BEE141E054ECE003484558BDE03FE05E12
:100D00000010E7BEE141E054ECF70448455245BD10
:100D1000E03FE7C8E15EE054ED0A05414C4C4F541A
:100D2000BDE03FE7C8E20AE054ED1A012CBDE03F08
:100D3000ED0FE141E05E0001E4C3ED20E054ED2B56
:100D400002432CBDE03FED0FE150E05E0001E4DC2A
:100D5000ED20E054ED4006534F55524345BDE03F72
:100D6000E830E9F9E054ED56072F535452494E4705
:100D7000BDE03FE0BCE0B0E174E0BCE0BCE18DE090
:100D800054ED68083E434F554E544544BDE03FEA9C
:100D900034E150E4CFE0A1E418E054ED8304574F70
:100DA0005244BDE03FE07AED5DE814E15EED70E0B5
:100DB0007AE0F1E0BCE46BE0B0E0F1E0BCE485E0B7
:100DC0007AE2CBEDC7E1EEE0FCE0FCE0BCE18DE8CF
:100DD00014E20AE0D7E18DED0FED8CED0FE78EE028
:100DE000B0EA73E174E150E054ED9D074E46413E98
:100DF0004C4641BDE03FE05E0002E18DE054EDEB8A
:100E0000074E46413E434641BDE03FEA73E05E0087
:100E10003FE1ACE174E054EE0006494D4D45443FDE
:100E2000BDE03FE169E05E0040E1ACE054EE190452
:100E300046494E44BDE03FE809E15EEA34E169E03D
:100E40005E00BFE1ACE0A1E169E26CE2CBEE63EAF7
:100E500034E4CFE0A1E07AE4CFE0A1E169E3E7E2A6
:100E6000BCEE67E05E0001E07AE2CBEE75E096ED65
:100E7000F3E15EE07AE24DE2CBEE3BE07AE2CBEEEC
:100E800093E0CCE07AEE08E0A1EE20E24DE05E00D7
:100E900001E1B7E054EE2F474C49544552414CBD57
:100EA000E03FE821E15EE2CBEEB2E05EE05EE4F638
:100EB000ED2DE054EE970644494749543FBDE03FCD
:100EC000E07AE05E0039E291E05E0100E1ACE174BD
:100ED000E07AE05E0140E291E05E0107E1ACE18D85
:100EE000E05E0030E18DE07AE7BEE15EE29EE05434
:100EF000EEB6053F5349474EBDE03FE0B0E169E043
:100F00005E002CE18DE07AE89EE05E0001E26CE19B
:100F1000ACE07AE2CBEF23E1E4E0F1E05E0001ED4A
:100F200070E0FCE054EEF2073E4E554D424552BD96
:100F3000E03FE07AE2CBEF62E0B0E169EEBDE24D86
:100F4000E2CBEF48E096E054E0F1EA45E7BEE15E2F
:100F5000EBE9E0FCE17DEA45E05E0001ED70E2BC1A
:100F6000EF32E054EF27073F4E554D424552BDE06A
:100F70003FE07AE05E0000E05E0000E0BCEA73EE75
:100F8000F8E0F1EF2FE2CBEF97E0FCEA24EA24E06F
:100F90005E0000E2BCEFA7EA24E0CCE0FCE2CBEF8D
:100FA000A3E19FE05EFFFFE054EF6609494E544520
:100FB0005250524554BDE03FE830EA0DE05E00007B
:100FC000E814E141E78EEDA2E07AE169E2CBF010AE
:100FD000EE34E085E2CBEFF2E1E4E821E15EE24DC0
:100FE000E1B7E2CBEFECE06EE2BCEFEEE4F6E2BCA0
:100FF000F00CEF6EE2CBEFFEEE9FE2BCF00CEA737A
:10100000EB56E05E003FE031EA85F094E2BCEFC4CD
:10101000E096E054EFAB084556414C55415445BD70
:10102000E03FE05E0000E7D3E141E830E9F9E0F1BC
:10103000E0F1E814E15EE0F1EFB5E0FCE814E14135
:10104000E0FCE0FCE830EA0DE054F01604515549AC
:1010500054BDE03FE863E844E141E86DE137E05E1C
:101060000000E821E141E7A8E07AE79DEAFEEA9E78
:10107000EFB5EA85E821E15EE24DE2CBF086EB8058
:10108000034F4B20EB56E2BCF066E054F04C0541B8
:10109000424F5254BDE03FE84EE11FF051E054F0A2
:1010A0008E063F41424F5254BDE03FE0BCE2CBF0E0
:1010B000B5EB56F094EA24E054F0A14641424F5279
:1010C0005422BDE03FEB96E05EF0A8E4F6E054F079
:1010D000BB0127BDE03FE78EEDA2EE34E24DEB8091
:1010E000013FF0A8E054F0D10443484152BDE03F35
:1010F000E78EEDA2E1E4E169E054F0E8465B4348A5
:1011000041525DBDE03FF0EDE05EE05EE4F6ED2DC6
:10111000E054F0FC4128BDE03FE05E0029EDA2E094
:1011200096E054F114415CBDE03FE7D3E15EE2CBD1
:10113000F14EE814E15EE07AE05E0040E99AE05E9C
:101140000040E0A1E18DE174E814E141E054ED5D7F
:10115000E814E141E096E054F1250643524541543C
:1011600045BDE03FE809E15EED2DED0FE809E14105
:10117000E78EEDA2E169E1E4ED20E05EE045E51AED
:10118000E054F15A4752454355525345BDE03FE8BC
:1011900009E15EEE08E4F6E054F184415BBDE03F16
:1011A000E05E0000E821E141E054F19B015DBDE01B
:1011B0003FE05EFFFFE821E141E054F1AC04484923
:1011C0004445BDE03FE809E15EE07AE169E05E00A8
:1011D00080E1B7E0A1E150E054F1BD06524556452B
:1011E000414CBDE03FE809E15EE07AE169E05E0084
:1011F0007FE1ACE0A1E150E054F1DB09494D4D4500
:101200004449415445BDE03FE809E15EE07AE169C7
:10121000E05E0040E1B7E0A1E150E054F1FB435B48
:10122000275DBDE03FF0D3E05EE05EE4F6ED2DE04B
:1012300054F21E48504F5354504F4E45BDE03FE7C7
:101240008EEDA2EE34E07AE24DEB80013FF0A8E2B1
:1012500061E2CBF267E05EE05EE4F6ED2DE05EE495
:10126000F6E4F6E2BCF269E4F6E054F233065749DC
:101270005448494EBDE03FE0B0E18DE0F1E18DE042
:10128000FCE29EE054F26D044D4F5645BDE03FE058
:10129000F1EA34E0A1E07AE107E174F274E2CBF222
:1012A000A9E0FCE43DE2BCF2ADE0FCE418E054F25D
:1012B00087054445505448BDE03FE113E84EE0A1A6
:1012C000E18DE201E054F2B10C454E5649524F4EC9
:1012D0004D454E543FBDE03FEA24E05E0000E0543F
:1012E000F2C805574F524453BDE03FE809E15EE0C4
:1012F0007AEA73E05E003FE1ACEB56EA9EEDF3E183
:101300005EE07AE24DE2CBF2EFE096E054F2E202E8
:101310002E53BDE03FE113E84EE18DE2CBF339E11E
:1013200013E84EE05E0002E18DE2E5E340E15EF4A9
:1013300013E05EFFFEE330F32BE054F30F064D4164
:10134000524B4552BDE03FED0FE809E15EF161ED22
:101350002DED2DE59BBDE585E07AE15EE0A1E4B6EB
:10136000E15EE7C8E141E809E141E054F33D0443AF
:101370004F4C44BDE03FFFA2E7B2FF95E418EB807D
:101380001F363830392043616D656C466F72746862
:101390002076312E3120203230204D6172203136BE
:1013A000EB56EA85F094E054F36E022E48BDE03F20
:1013B000E05E000FE1ACE05E0030E174E07AE05EF8
:1013C0000039E291E2CBF3CEE05E0007E174E03158
:1013D000E054F3AA032E4848BDE03FE07AE201E280
:1013E00001E201E201F3ADF3ADE054F3D4052E4880
:1013F000484848BDE03FE07AE201E201E201E20153
:10140000E201E201E201E201F3D8F3D8E054F3EDA6
:1014100002482EBDE03FF3F3EA9EE054F410022EA2
:1014200042BDE03FE07AE169F3D8EA9EE1E4E054AE
:10143000F41E022E41BDE03FE07AE169E07AE05E11
:101440000020E05E007FF274E24DE2CBF454E096BF
:10145000E05E002EE031E1E4E054F4320444554D06
:1014600050BDE03FE05E0000E2E5EA85E07AF4137B
:10147000EA9EE07AF421F421F421F421F421F4210C
:10148000F421F421EA9EF421F421F421F421F42141
:10149000F421F421F421E096EA9EF435F435F43594
:1014A000F435F435F435F435F435F435F435F435F4
:1014B000F435F435F435F435F435E05E0010E330FE
:1014C000F46AE096E054F45C0453545550BDE03F98
:1014D000EA34E0A1E2E5E340E07AE141E784E33089
:1014E000F4D6E054F4C8055354555049BDE03FEAE2
:1014F00034E0A1E2E5E340E19FE340E141E784E33A
:1015000030F4F5E054F4E6055453545550BDE03F33
:10151000EA34E0A1E2E5E340E07AE15EE279E2CBA1
:10152000F532EB8007204572726F7240EB56E34054
:10153000ECACE784E330F516E054F5070654535459
:10154000555049BDE03FEA34E0A1E2E5E340E19FC8
:10155000E340E15EE279E2CBF56AEB800720457279
:10156000726F7240EB56E340ECACE784E330F54C2D
:10157000E054F53C0450415353BDE03FF4CDF50D2C
:10158000F4ECF543E054F57406504153534553BD14
:10159000E03FE05E0000E2E5EB80012EEB56F579DE
:1015A000E30CF598E054F5880653444C424132BDB3
:1015B000E03FE05EFFDCE150E054F5A80753444C07
:1015C00042413130BDE03FE07AE05E00FFE1ACE057
:1015D0005EFFDAE150E05E0008E238E05EFFDBE14A
:1015E00050E054F5BC06534449444C45BDE03FE04F
:1015F0005EFFD9E07AE169E05E0080E26CE2CBF563
:10160000F3E096E054F5E50453445244BDE03FE076
:10161000A1F5C4F5ECE05E0000E05EFFD9E150E02A
:101620007AE05E0200E174E0A1E2E5E05EFFD9E06D
:101630007AE169E05E00E0E26CE2CBF62FE096E052
:101640005EFFD8E169E340E150E30CF62BE054F68D
:10165000070453445752BDE03FE0A1F5C4F5ECE068
:101660005E0001E05EFFD9E150E07AE05E0200E159
:1016700074E0A1E2E5E05EFFD9E07AE169E05E00B6
:10168000A0E26CE2CBF679E096E340E169E05EFF30
:10169000D8E150E30CF675E054F65105534452443A
:1016A0006EBDE03FE05E0000E2E5EA34F60CE05E8D
:1016B0000200E174E0A1E1E4E0A1E30CF6AAEA246F
:1016C000E054F69B0753445244323536BDE03FE0C8
:1016D000A1F5C4F5ECE05E0000E05EFFD9E150E06A
:1016E0007AE05E0100E174E0A1E2E5E05EFFD9E0AE
:1016F0007AE169E05E00E0E26CE2CBF6EFE096E0D2
:101700005EFFD8E169E340E150E30CF6EBE05E01F7
:1017100000E05E0000E2E5E05EFFD9E07AE169E02A
:101720005E00E0E26CE2CBF71BE096E05EFFD8E102
:1017300069E096E30CF717E054F6C40853445244AA
:101740003235366EBDE03FE05E0000E2E5EA34F699
:10175000CCE05E0100E174E0A1E1E4E0A1E30CF77C
:101760004DEA24E054F73B05534457526EBDE03F29
:10177000E05E0000E2E5EA34F656E05E0200E17465
:10178000E0A1E1E4E0A1E30CF776EA24E054F76796
:1017900005534457525ABDE03FF5C4F5ECE05E00F6
:1017A00001E05EFFD9E150E05E0200E05E0000E291
:1017B000E5E05EFFD9E07AE169E05E00A0E26CE27C
:1017C000CBF7B5E096E05E0000E05EFFD8E150E3C5
:1017D0000CF7B1E054F79003706976BDE03FE05E2E
:1017E000004FE05E1000E150E05E1F8BE05E1001F4
:1017F000E141E05E86A0E05E1003E141E05E00B7FB
:10180000E05E1005E150E05EFFDEE05E1006E141C3
:10181000E05E1000E06EE054F7D7055049564F5493
:10182000BDE03FE05E007EE05E1008E150E05E104B
:1018300009E141F7DBE054F81A085049564F545279
:101840005354BDE03FE05E6E9FE05E1008E141E072
:101850005EFFFEE05E100AE141F7DBE054F8390676
:101860004D4D554D4150BDE03FE05E0010E05E0043
:1018700000E2E5E340E07AE05E0008E21FE1B7E065
:101880005EFFDEE141E30CF873E05E0020E05EFF06
:10189000DEE150E054F85F064546544F4344BDE056
:1018A0003FE05E2607E05EFFDEE141E054F8970688
:1018B0004344544F4344BDE03FE05E2606E05EFFF4
:1018C000DEE141E054F8AF054355424958BDE03FE1
:1018D000F866F89EE05E0002F5AFE05E0000E05EB4
:1018E000D800E05E0004F6A1E05E0000F5AFF8B6B7
:1018F000F842E054F8C7065344424F4F54BDE03F0E
:10190000F866F89EE05E0002F5AFE05EC000E05EC3
:101910000010F6A1E05E0000F5AFF8B6E05E2787A4
:10192000E05EFFDEE141F842E054F8F60542415343
:101930004943BDE03FE05E1000F8FDE054F92C079C
:101940005344464F525448BDE03FE05E0FF0F8FD6F
:10195000E054F93F054255474759BDE03FF866F866
:101960009EE05E0002F5AFE05E1E00E05EC400E0B7
:101970005E000EF6A1E05E0000F5AFF8B6F842E0BA
:1019800054F95404464C4558BDE03FF866E05E000B
:1019900002F5AFE05E2000E05EC100F60CE05E0004
:1019A00000F5AFE05EC100F820E054F983074E492E
:1019B00054524F5339BDE03FF866F89EE05E000296
:1019C000F5AFE05E84C8E05E2600E05E0012F744FA
:1019D000E05E0000F5AFE05E0100E05EDFF2E141B5
:1019E000E05E0103E05EDFF4E141E05E010FE05EF6
:1019F000DFF6E141E05E010CE05EDFF8E141E05E30
:101A00000106E05EDFFAE141E05E0109E05EDFFC35
:101A1000E141F8B6E05E2602F820E054F9AD054653
:101A2000555A4958BDE03FF866E05E0003F5AFE067
:101A30005E0000E05ED000F60CE05ED000F820E032
:101A400054FA1E07424144424C4F42BDE03FEB80F6
:101A50000F4552524F522042414420424C4F4220A7
:101A6000EB56EB56EA85F094E054FA4306424144C3
:101A70004D4147BDE03FE07AE05E0006E174EB8057
:101A80000443463039E3E7E2CBFA9CEB800C4D414E
:101A9000474943204E554D424552FA4BE054FA6CAB
:101AA0000642414453495ABDE03FE07AE15EE0B06E
:101AB000E4B6E15EE26CE2CBFAC9EB800A5A455229
:101AC0004F204259544553FA4BE054FAA005424185
:101AD000444C44BDE03FE07AE15EED0FE279E2CBB9
:101AE000FAF0EB80094C4F41442041444452FA4BF8
:101AF000E054FACD04424C4F42BDE03FE809E15EBC
:101B0000ED0FE07AF161ED2DED2DED2DE05E434618
:101B1000ED2DE05E3039ED2DE59BBDE585E4B6E0C9
:101B20007AED0FE0A1E141E4B6E809E15EE0A1E170
:101B300041E054FAF406524D424C4F42BDE03FF0B2
:101B4000D3E4E6FA73E07AE15EE7C8E141E15EE101
:101B50005EE809E141E054FB3507464958424C4FE5
:101B600042BDE03FE05EFAF9E05E0021E174F0D3AF
:101B7000E4E6FA73E05E0002E18DE141E054FB59D6
:101B8000065752424C4F42BDE03FE05E0001E21F6B
:101B9000E7EDE4B6E15EE174F0D3E4E6FA73FAA7A8
:101BA000E07AE4B6E15EE0B0E15EE18DE05E00097E
:101BB000E238E05E0001E174E0A1E15EE0A1E7ED62
:101BC000E15EF5AFF76DE054FB80065244424C4FA6
:101BD00042BDE03FE7EDE15EF5AFE05E0001E21FF0
:101BE000E7EDE4B6E15EE174ED0FEA34F60CED0FDB
:101BF000E4B6EE08E05E0003E174FA73FAD3E07A2B
:101C0000E4B6E15EE0B0E15EE18DE05E0009E2385D
:101C1000E0A1E0F1E07AE05E0000E279E2CBFC3A9C
:101C2000E0F1E05E0200E174E0A1E1E4E0A1EA3469
:101C3000F60CE0FCE1EEE2BCFC14E096EA24E0FCE9
:101C4000E809E15EED0FE141E4B6E07AE15EE7C864
:101C5000E141E4B6E15EE809E141E054FBCA066E09
:101C60007874627566BDE03FE7FBE15EE07AE05EB6
:101C70000300E1ACE07AE05E0008E238E0F1E05E0B
:101C80000100E174E05E0300E1ACE0A1E05EFCFF76
:101C9000E1ACE1B7E7FBE141E0FCE054FC5E066348
:101CA0007572627566BDE03FE05E000AE21FE7FB09
:101CB000E15EE05EF3FFE1ACE1B7E7FBE141E05458
:101CC000FC9E056275663261BDE03FE05E000AE29F
:101CD0001FE05ED000E174E054FCC206627566321B
:101CE0007364BDE03FE07AFCC8E0A1E7EDE9F9F5F7
:101CF000AFE0A1E1F8E4B6E7FBE174E15EE1F8E111
:101D000074E0A1E05E0002E054FCDB0562756672DF
:101D100064BDE03FE05E0001E0B0E21FE7FBE15E92
:101D2000E1ACE2CBFD2CE096E2BCFD30FCE2F6A19A
:101D3000E054FD0B056275667772BDE03FE05E0022
:101D400001E0B0E21FE7FBE15EE1ACE07AE2CBFD4F
:101D500063E7FBE15EE1C3E7FBE141FCE2F76DE233
:101D6000BCFD65EA24E054FD340661736E626C6B61
:101D7000BDE03FE05E0004E05E0000E2E5E7FBE17D
:101D80005EE05E0001E340E05E0004E174E21FE11A
:101D9000ACE2CBFDB1E340E4C3E4B6E7FBE174E1C0
:101DA0005EE0B0E26CE2CBFDB1E096E340E2FFE042
:101DB00054E30CFD7DFC65E07AFD3AE07AE0F1E465
:101DC000C3E4B6E7FBE174E141E0FCE05E0001E062
:101DD000B0E05E0004E174E21FE7FBE15EE1B7E71B
:101DE000FBE141E054FD6905424C4F434BBDE03FF0
:101DF000FD70E07AFCA5E07AFD11FCC8E054FDE737
:101E000006425546464552BDE03FFD70E07AFCA5CE
:101E1000FCC8E054FE00044C4F4144BDE03FE830B4
:101E2000E9F9E0F1E0F1E7D3E15EE0F1E814E15E29
:101E3000E0F1E07AE7D3E141FDEDE05E0000E81477
:101E4000E141E05E0400EFB5E0FCE814E141E0FCB4
:101E5000E07AE24DE2CBFE62E096E05E0000E2BC9A
:101E6000FE6AE07AE7D3E141FDEDE0FCE05E03FFCE
:101E7000E1ACE1B7E0FCE830EA0DE054FE160454B2
:101E8000485255BDE03FE1E4E0A1E2E5E340FE1B3E
:101E9000E30CFE8CE054FE7E0C534156452D42551A
:101EA0004646455253BDE03FE05E0004E05E000060
:101EB000E2E5E340FD3AE30CFEB2E054FE9805464D
:101EC0004C555348BDE03FFEA5E05E0000E7FBE156
:101ED00041E054FEBE06555044415445BDE03FE745
:101EE000FBE07AE15EE07AE05E000AE238E05E0064
:101EF00003E1ACE05E0001E0A1E21FE1B7E0A1E197
:101F000041E054FED50D454D5054592D425546469D
:101F1000455253BDE03FE05E0000E7FBE141E05485
:101F2000FF05046C746F70BDE03FE05E0040E05E52
:101F30000000E2E5E05E002DE031E30CFF34EA85CD
:101F4000E054FF22044C495354BDE03FEA85FF278B
:101F5000E07AE7DEE141FDEDE05E0010E05E0000CA
:101F6000E2E5E05E0040E05E0000E2E5F435E30C0F
:101F7000FF6CEA85E30CFF62E096FF27E0548606DB
:101F80001F8B10CE0700CE08007EF3733BFF440585
:101F900023494E4954BDE5F7001AFF8F0555494EB8
:101FA0004954BDE0450000000A00000000000000A8
:101FB00002080000000000000000000000FF9C205C
:101FC0002D2D444943542F53504152452D2D2D3E24
:101FD0003C2D2D2D2D20494F202D2D2D2D2D2D3EED
:101FE0003C2D2D2D20554E55534544202D2D2D3E55
:101FF000FF8CFF8CFF8CFF8CFF8CFF8CFF8CFF7E97
:00200001DF

View File

@@ -0,0 +1,5 @@
set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT"
set_global_assignment -name IP_TOOL_VERSION "17.0"
set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{Cyclone V}"
set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "M6809_CAMELFORTH_ROM.vhd"]
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "M6809_CAMELFORTH_ROM.cmp"]

View File

@@ -0,0 +1,144 @@
-- megafunction wizard: %ROM: 1-PORT%
-- GENERATION: STANDARD
-- VERSION: WM1.0
-- MODULE: altsyncram
-- ============================================================
-- File Name: M6809_CAMELFORTH_ROM.vhd
-- Megafunction Name(s):
-- altsyncram
--
-- Simulation Library Files(s):
-- altera_mf
-- ============================================================
-- ************************************************************
-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
--
-- 17.0.0 Build 595 04/25/2017 SJ Lite Edition
-- ************************************************************
--Copyright (C) 2017 Intel Corporation. All rights reserved.
--Your use of Intel Corporation's design tools, logic functions
--and other software and tools, and its AMPP partner logic
--functions, and any output files from any of the foregoing
--(including device programming or simulation files), and any
--associated documentation or information are expressly subject
--to the terms and conditions of the Intel Program License
--Subscription Agreement, the Intel Quartus Prime License Agreement,
--the Intel MegaCore Function License Agreement, or other
--applicable license agreement, including, without limitation,
--that your use is for the sole purpose of programming logic
--devices manufactured by Intel and sold by Intel or its
--authorized distributors. Please refer to the applicable
--agreement for further details.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
USE altera_mf.altera_mf_components.all;
ENTITY M6809_CAMELFORTH_ROM IS
PORT
(
address : IN STD_LOGIC_VECTOR (12 DOWNTO 0);
clock : IN STD_LOGIC := '1';
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
END M6809_CAMELFORTH_ROM;
ARCHITECTURE SYN OF m6809_camelforth_rom IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0);
BEGIN
q <= sub_wire0(7 DOWNTO 0);
altsyncram_component : altsyncram
GENERIC MAP (
address_aclr_a => "NONE",
clock_enable_input_a => "BYPASS",
clock_enable_output_a => "BYPASS",
init_file => "./ROMS/6809/CAMELFORTH_2KRAM.hex",
intended_device_family => "Cyclone V",
lpm_hint => "ENABLE_RUNTIME_MOD=NO",
lpm_type => "altsyncram",
numwords_a => 8192,
operation_mode => "ROM",
outdata_aclr_a => "NONE",
outdata_reg_a => "UNREGISTERED",
widthad_a => 13,
width_a => 8,
width_byteena_a => 1
)
PORT MAP (
address_a => address,
clock0 => clock,
q_a => sub_wire0
);
END SYN;
-- ============================================================
-- CNX file retrieval info
-- ============================================================
-- Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0"
-- Retrieval info: PRIVATE: AclrAddr NUMERIC "0"
-- Retrieval info: PRIVATE: AclrByte NUMERIC "0"
-- Retrieval info: PRIVATE: AclrOutput NUMERIC "0"
-- Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0"
-- Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8"
-- Retrieval info: PRIVATE: BlankMemory NUMERIC "0"
-- Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0"
-- Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0"
-- Retrieval info: PRIVATE: Clken NUMERIC "0"
-- Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0"
-- Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A"
-- Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0"
-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
-- Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0"
-- Retrieval info: PRIVATE: JTAG_ID STRING "NONE"
-- Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0"
-- Retrieval info: PRIVATE: MIFfilename STRING "./ROMS/6809/CAMELFORTH_2KRAM.hex"
-- Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "8192"
-- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0"
-- Retrieval info: PRIVATE: RegAddr NUMERIC "1"
-- Retrieval info: PRIVATE: RegOutput NUMERIC "0"
-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
-- Retrieval info: PRIVATE: SingleClock NUMERIC "1"
-- Retrieval info: PRIVATE: UseDQRAM NUMERIC "0"
-- Retrieval info: PRIVATE: WidthAddr NUMERIC "13"
-- Retrieval info: PRIVATE: WidthData NUMERIC "8"
-- Retrieval info: PRIVATE: rden NUMERIC "0"
-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
-- Retrieval info: CONSTANT: ADDRESS_ACLR_A STRING "NONE"
-- Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS"
-- Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS"
-- Retrieval info: CONSTANT: INIT_FILE STRING "./ROMS/6809/CAMELFORTH_2KRAM.hex"
-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
-- Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO"
-- Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram"
-- Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "8192"
-- Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM"
-- Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE"
-- Retrieval info: CONSTANT: OUTDATA_REG_A STRING "UNREGISTERED"
-- Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "13"
-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "8"
-- Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1"
-- Retrieval info: USED_PORT: address 0 0 13 0 INPUT NODEFVAL "address[12..0]"
-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock"
-- Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]"
-- Retrieval info: CONNECT: @address_a 0 0 13 0 address 0 0 13 0
-- Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0
-- Retrieval info: CONNECT: q 0 0 8 0 @q_a 0 0 8 0
-- Retrieval info: GEN_FILE: TYPE_NORMAL M6809_CAMELFORTH_ROM.vhd TRUE
-- Retrieval info: GEN_FILE: TYPE_NORMAL M6809_CAMELFORTH_ROM.inc FALSE
-- Retrieval info: GEN_FILE: TYPE_NORMAL M6809_CAMELFORTH_ROM.cmp TRUE
-- Retrieval info: GEN_FILE: TYPE_NORMAL M6809_CAMELFORTH_ROM.bsf FALSE
-- Retrieval info: GEN_FILE: TYPE_NORMAL M6809_CAMELFORTH_ROM.vhd FALSE
-- Retrieval info: LIB_FILE: altera_mf

View File

@@ -1 +1 @@
`define BUILD_DATE "241217"
`define BUILD_DATE "250106"

Binary file not shown.