FRAM71 : Threads, Articles, Presentations, Manuals, etc.
Introduction
The goal of this page is to have FRAM71 common information in one place.
Table of Content
- Threads
- Articles
- Manuals
- Presentations
- Resources
- Virtual Tapes
- File Formats
- Programs Output
- Programs Listing
- Update History
Threads
Articles
Manuals
Presentations
- 2016-09-18 → HHC 2016 : Even more RAM with FRAM71B (Video & Slides) by Robert Prosperi
- 2015-09-26 → HHC 2015 : FRAM71 Introduction (Video & Slides) by Robert Prosperi
Resources
Virtual Tapes
Virtual Tape #0 : FRAM71 ToolKit (11 files, v1.6, Article, 2021-01-17, Dave Frederickson)
Code:
Name Type Length Description
Code:
FRAMTK ROM 4096 FRAM71TK ROM image by Dave Frederickson
FORTHROM ROM 16384 FORTH Assembler ROM
FORTH1B ROM 16384 FORTH Assembler ROM with updates from Jean-François Garnier
HRDFORTH TEXT 67840 FORTH Assembler ROM dump file (E0000-EFFFF)
FTH41ROM ROM 16384 HP41 Translator Pac
HRDFTH41 TEXT 67840 HP41 Translator Pac dump file (E0000-EFFFF)
DIAG71 TEXT 34048 Diagnostic ROM dump file (00000-07FFF)
MEMBUF BASIC 651 Memory configuration display by Paul Berger
Code:
ROMCOPY LEX 1727 Add ROMCOPY command, copy ROM images
SHOWPORT LEX 151 Upgrade SHOW PORT command to 2CDCC version
DESAL LEX 718 Add unrestricted PEEK$ & POKE commands
Note #1: see dump file format below
Note #2: see MEMBUF program output below
FRAMTK 4K ROM : FRAM71 ToolKit (8 files, v1.6, 2021-01-17, Dave Frederickson)
Code:
Name Type Length Description
Code:
F2R BASIC 160 Copy hard‐wired FORTH ROM to FRAM71
F2R2 BASIC 196 Copy hard‐wired FORTH ROM to FRAM71 with bug fix
T2R BASIC 160 Copy hard‐wired Translator ROM to FRAM71
F2S BASIC 158 Copy system ROM or Diag ROM to SYSRAM
MEMBUF BASIC 651 Memory configuration display by Paul Berger
ROMCOPY LEX 1727 Add ROMCOPY command, copy ROM images
DESAL LEX 718 Add unrestricted PEEK$ & POKE commands
UNPRIV LEX 105 Add UNPRIV command, remove file private flag (UnPrivate)
Note #1: see BASIC programs listing below
Note #2: see MEMBUF program output below
Virtual Tape #1 : OS & IL ROM Images (11 files, v3, 2021-01-23, Sylvain Côté)
Code:
Name Type Length Description
Code:
ROMCOPY LEX 1727 Add ROMCOPY command, copy ROM images
OS1AAAA TEXT 135K 71 OS 1AAAA ROM dump file (00000-1FFFF)
OS1AAAAL BASIC 159 71 OS 1AAAA ROM dump loader (see note below)
OS1BBBB TEXT 135K 71 OS 1BBBB ROM dump file (00000-1FFFF)
OS1BBBBL BASIC 159 71 OS 1BBBB ROM dump loader (see note below)
OS2CCCC TEXT 135K 71 OS 2CCCC ROM dump file (00000-1FFFF)
OS2CCCCL BASIC 159 71 OS 2CCCC ROM dump loader (see note below)
Code:
OS2CDCC TEXT 135K 71 OS 2CDCC ROM dump file (00000-1FFFF)
OS2CDCCL BASIC 159 71 OS 2CDCC ROM dump loader (see note below)
HPIL1A ROM 16384 82401A HP-IL 1A ROM
HPIL1B ROM 16384 82401A HP-IL 1B ROM
Note #1: see dump file format below
Note #2: see BASIC programs listing below
Note #3: dump loader programs assume dump files are located in the first tape drive on the loop.
Virtual Tape #2 : HP ROM Images (20 files, v3, 2021-01-23, Sylvain Côté)
Code:
Name Type Length Description
Code:
ROMCOPY LEX 1727 Add ROMCOPY command, copy ROM images
FORTHROM ROM 16384 82441A FORTH Assembler ROM [FTH:1A]
FORTH1B ROM 16384 82441A FORTH Assembler ROM [FTH:1B] with updates from Jean-François Garnier
FORTHDMP TEXT 67840 82441A FORTH Assembler ROM dump file (E0000-EFFFF)
FORTHLDR BASIC 160 82441A FORTH Assembler ROM dump loader
DATAACQ ROM 65536 82479A Data Acquisition Pac
MATHROM ROM 32768 82480A Math Pac [MATH:1A]
MATH1A LEX 27682 82480A Math Pac [MATH:1A]
Code:
CIRCUIT ROM 16384 82481A Circuit Analysis Pac
FINANCE ROM 16384 82482A Finance Pac
SURVEY ROM 16384 82483A Surveying Pac
CURVEFIT ROM 32768 82484A Curve Fitting Pac
TEXTEDIT ROM 16384 82485A Text Editor Pac
DATACOMM ROM 16384 82488A Data Comms Pac
AMPISTAT ROM 32768 82489A AMPI Statistics Pac
FTH41ROM ROM 16384 82490A HP41 Translator Pac
FTH41DMP TEXT 67840 82490A HP41 Translator Pac dump file (E0000-EFFFF)
FTH41LDR BASIC 160 82490A HP41 Translator Pac dump loader
Code:
DEMO71 ROM 16384 5953-5622 Demo ROM
DIAG71 TEXT 135K Diagnostic ROM dump file (00000-07FFF & 08000-0FFFF filled with 0)
DIAG71LD BASIC 158 Diagnostic ROM dump loader
Note #1: see dump file format below
Note #2: see BASIC programs listing below
Note #3: dump loader programs assume dump files are located in the first tape drive on the loop.
Note #4: updated FORTH ROM information is available HERE
Virtual Tape #3 : Third Party ROM Images (7 files, v3)
Code:
Name Type Length Description
Code:
ROMCOPY LEX 1727 Add ROMCOPY command, copy ROM images
CMTTOOLS ROM 32768 CMT EPROM Tools
DATAMGMT ROM 32768 Data Management
JPCE01ROM ROM 32768 Journal Paris Chapter ROM Rev. E01 from PPC PARIS
JPCF01ROM ROM 32768 Journal Paris Chapter ROM Rev. F01 from Jean-François Garnier
JPCF04 LEX 25992 Journal Paris Chapter ROM Rev. F04 from Jean-François Garnier
JPCF05 LEX 25992 Journal Paris Chapter ROM Rev. F05 from Jean-François Garnier
JPCF05ROM ROM 32768 Journal Paris Chapter ROM Rev. F05 from Jean-François Garnier
Code:
MATH2A LEX 28527 Math ROM with enhancements from Jean-François Garnier
MATH2B6 LEX 31228 Math ROM with enhancements from Jean-François Garnier
ZENWAND ROM 16384 Zengrange Wand
Note #1: JPC ROM information is available HERE
Note #2: enhanced MATH ROM information is available HERE
File Formats
Dump file extract
Code:
\0@6400E4050E8F11EB302EFCF2EC854EDEA5EC736E8E76E0CD6E7FD6E67E6E1BE6
\0@E000000C08A107EDCA1E1720E68D5E61000C183E1720E78C3E300F90E0C42E8E
\0@17E00000188D1900E8E15C00DBF28800E189DAA00E8E83C00EBF21A00E18AD3C
\0@00E8EF1C00FBF2AB00E184DCD00E8E60C000CF23D00E18CC5F00E8EDEB00CBF2
\0@CE00E187AA107E00C3E58A0E22E3E200C42EF8F5E8E17E5010E1C9CA107E1DF5
...
File information
Code:
File format : ASCII/TEXT (LIF Type: 00 01 )
Line length : 66 bytes (2 bytes header + 64 bytes data)
Line format : header (data length = 64 or 0x0040 or "\0@") followed by the data (64 ASCII HEX characters)
Equivalence : 1 nibble = 1 ASCII hex character
File length : (((ROM size in nibbles)/64)*(2+64))+256 -> ex: ((131072/64)*(2+64))+256 = 135424
Programs Output
MEMBUF output on a standard HP-71B with HP-IL module and FREE PORT(0) executed
Code:
Port Dev Seq Size Addr Type // Type Comment
0 1 0 4 30000 0 // RAM Second built-in 4K RAM chip (0.01)
0 2 0 4 32000 0 // RAM third built-in 4K RAM chip (0.02)
0 3 0 4 34000 0 // RAM fourth built-in 4K RAM chip (0.03)
0 0 0 4 48000 1 // IRAM first built-in 4K RAM chip (0.00), FREE PORT(0)
0 5 0 16 40000 2 // ROM HP-IL 16K ROM chip (0.05)
Programs Listing
FRAM71TK: MEMBUF → program listing
Code:
10 REAL S1(15) @ S2=15 @ FOR S3=1 TO 15 @ S1(S3)=2↑S2/4 @ S2=S2-1 @ NEXT S3 @ S1(15)=.5
15 DIM T$[255]
20 B1=HTD("2F9E6")
25 DISP "Port Dev Seq Size Addr Type"
30 B2=B1 @ B3=B1+5 @ I=0 @ K$="FF"
40 GOSUB 300
60 B2=B1+5+L @ B3=B2+5 @ I=1 @ K$="EF"
70 GOSUB 300
100 END
300 IF PEEK$(DTH$(B2),2)<>K$ THEN 500
320 L$="" @ L$=PEEK$(DTH$(B3-1),1)&PEEK$(DTH$(B3-2),1)&PEEK$(DTH$(B3-3),1) @ L=HTD(L$)
330 T$=PEEK$(DTH$(B3),L)
340 FOR X=1 TO L/10
350 Z=(X-1)*10 @ Z2=Z+1 @ S$=T$[Z2,Z2] @ Z2=Z2+1 @ D$=T$[Z2,Z2] @ Z2=Z2+1 @ P$=T$[Z2,Z2]
360 Z2=Z2+1 @ S=S1(HTD(T$[Z2,Z2]))*(HTD(T$[Z+9,Z+9])+1)
370 A$=T$[Z+7,Z+7]&T$[Z+6,Z+6]&T$[Z+5,Z+5]&"00"
375 T=VAL(T$[Z+8,Z+8])+I
380 DISP USING "AA,aaAA,aaaa,aaAA,3D,aa,7A,D";" ",P$,D$,S$,S," ",A$,T
390 NEXT X
400 RETURN
499 END
500 DISP "Problem with memory config buffer"
510 END
FRAMTK: F2R → program listing, read FRAM71TK manual to map code logic with step-by-step instructions
Code:
10 DIM A$[64]
15 ASSIGN #1 TO HRDFORTH:TAPE
20 S$="30000"
30 E$="3FFFF"
40 S=HTD(S$)
50 E=HTD(E$)
60 FOR I=S TO E STEP 64
70 READ #1;A$
80 I$=DTH$(I)
90 POKE I$,A$
100 DISP I$
110 NEXT I
115 ASSIGN #1 TO *
120 END
FRAMTK: F2R2 → program listing, read FRAM71TK manual to map code logic with step-by-step instructions
Code:
10 DIM A$[64]
15 ASSIGN #1 TO HRDFORTH:TAPE
20 S$="30000"
30 E$="3FFFF"
40 S=HTD(S$)
50 E=HTD(E$)
60 FOR I=S TO E STEP 64
70 READ #1;A$
80 I$=DTH$(I)
90 POKE I$,A$
100 DISP I$
110 NEXT I
120 ASSIGN #1 TO *
130 POKE "376A8","4"
140 POKE "376C4","9"
150 END
FRAMTK: T2R → program listing, read FRAM71TK manual to map code logic with step-by-step instructions
Code:
10 DIM A$[64]
15 ASSIGN #1 TO HRDFTH41:TAPE
20 S$="30000"
30 E$="3FFFF"
40 S=HTD(S$)
50 E=HTD(E$)
60 FOR I=S TO E STEP 64
70 READ #1;A$
80 I$=DTH$(I)
90 POKE I$,A$
100 DISP I$
110 NEXT I
115 ASSIGN #1 TO *
120 END
FRAMTK: F2S → program listing, read FRAM71TK manual to map code logic with step-by-step instructions
Code:
10 DIM A$[64]
15 ASSIGN #1 TO DIAG71:TAPE
20 S$="00000"
30 E$="07FFF"
40 S=HTD(S$)
50 E=HTD(E$)
60 FOR I=S TO E STEP 64
70 READ #1;A$
80 I$=DTH$(I)
90 POKE I$,A$
100 DISP I$
110 NEXT I
115 ASSIGN #1 TO *
120 END
71ROM1V3: OS1BBBBL → 71 OS ROM loader program listing
Code:
10 DIM A$[64]
15 ASSIGN #1 TO OS1BBBB:TAPE
20 S$="00000"
30 E$="1FFFF"
40 S=HTD(S$)
50 E=HTD(E$)
60 FOR I=S TO E STEP 64
70 READ #1;A$
80 I$=DTH$(I)
90 POKE I$,A$
100 DISP I$
110 NEXT I
115 ASSIGN #1 TO *
120 END
Note: differences between 71 OS ROM loaders ...
Code:
OS1AAAAL : 15 ASSIGN #1 TO OS1AAAA:TAPE
OS1BBBBL : 15 ASSIGN #1 TO OS1BBBB:TAPE
OS2CCCCL : 15 ASSIGN #1 TO OS2CCCC:TAPE
OS2CDCCL : 15 ASSIGN #1 TO OS2CDCC:TAPE
71ROM2V3: FORTHLDR → program listing
Code:
10 DIM A$[64]
15 ASSIGN #1 TO FORTHDMP:TAPE
20 S$="30000"
30 E$="3FFFF"
40 S=HTD(S$)
50 E=HTD(E$)
60 FOR I=S TO E STEP 64
70 READ #1;A$
80 I$=DTH$(I)
90 POKE I$,A$
100 DISP I$
110 NEXT I
115 ASSIGN #1 TO *
120 END
71ROM2V3: FTH41LDR → program listing
Code:
10 DIM A$[64]
15 ASSIGN #1 TO DIAG71:TAPE
20 S$="00000"
30 E$="1FFFF"
40 S=HTD(S$)
50 E=HTD(E$)
60 FOR I=S TO E STEP 64
70 READ #1;A$
80 I$=DTH$(I)
90 POKE I$,A$
100 DISP I$
110 NEXT I
115 ASSIGN #1 TO *
120 END
71ROM2V3: DIAG71LD → program listing
Code:
10 DIM A$[64]
15 ASSIGN #1 TO DIAG71:TAPE
20 S$="00000"
30 E$="1FFFF"
40 S=HTD(S$)
50 E=HTD(E$)
60 FOR I=S TO E STEP 64
70 READ #1;A$
80 I$=DTH$(I)
90 POKE I$,A$
100 DISP I$
110 NEXT I
115 ASSIGN #1 TO *
120 END
71 OS ROM loader program listing (reformatted & commented version)
Code:
10 DIM A$[64] ! loading 71 OS ROM 64 nibbles at a time
20 ASSIGN #1 TO OS1BBBB:TAPE ! opening dump file on tape
25 S$="00000" @ E$="1FFFF" @ S=HTD(S$) @ E=HTD(E$) ! setup start and stop addresses for loading 71OS ROM
30 FOR I=S TO E STEP 64 ! looping until the 71OS ROM load is completely done, 64 nibbles at a time
35 READ #1;A$ ! reading ASCII HEX value from tape file, A$ contains ROM data ASCII HEX value
40 I$=DTH$(I) @ POKE I$,A$ @ DISP I$ ! writing data to FRAM71 SYSMEM space and showing progress to user
45 NEXT I ! loop end
50 ASSIGN #1 TO * ! closing dump tape file
55 END ! progran end
Note: differences between 71 OS ROM loaders ...
Code:
OS1AAAAL : 15 ASSIGN #1 TO OS1AAAA:TAPE
OS1BBBBL : 15 ASSIGN #1 TO OS1BBBB:TAPE
OS2CCCCL : 15 ASSIGN #1 TO OS2CCCC:TAPE
OS2CDCCL : 15 ASSIGN #1 TO OS2CDCC:TAPE
71 OS ROM dumper program listing (reformatted & commented version)
Code:
10 DIM A$[64] ! dumping 71 OS ROM 64 nibbles at a time
15 CREATE TEXT OS1BBBB:TAPE,(((128*1024)/64)*(2+64))+256 ! creating the dump file on tape and pre-allocating space for it
20 ASSIGN #1 TO OS1BBBB:TAPE ! opening dump file on tape
25 S$="00000" @ E$="1FFFF" @ S=HTD(S$) @ E=HTD(E$) ! setup start and stop addresses for dumping 71OS ROM
30 FOR I=S TO E STEP 64 ! looping until the 71OS ROM dump is completely done, 64 nibbles at a time
35 I$=DTH$(I) @ A$=PEEK$(I$,64) ! reading ROM data, A$ contains ROM data ASCII HEX value
40 PRINT #1;A$ @ DISP I$ ! writing ASCII HEX value to tape file and showing progress to user
45 NEXT I ! loop end
50 ASSIGN #1 TO * ! closing dump tape file
55 END ! progran end
Note: differences between 71 OS ROM dumpers ...
- OS1AAAAD → 71 OS ROM dumper specific 1AAAA lines
Code:
15 CREATE TEXT OS1AAAA:TAPE,(((128*1024)/64)*(2+64))+256
20 ASSIGN #1 TO OS1AAAA:TAPE
- OS1BBBBD → 71 OS ROM dumper specific 1BBBB lines
Code:
15 CREATE TEXT OS1BBBB:TAPE,(((128*1024)/64)*(2+64))+256
20 ASSIGN #1 TO OS1BBBB:TAPE
- OS2CCCCD → 71 OS ROM dumper specific 2CCCC lines
Code:
15 CREATE TEXT OS2CCCC:TAPE,(((128*1024)/64)*(2+64))+256
20 ASSIGN #1 TO OS2CCCC:TAPE
- OS2CDCCD → 71 OS ROM dumper specific 2CDCC lines
Code:
15 CREATE TEXT OS2CDCC:TAPE,(((128*1024)/64)*(2+64))+256
20 ASSIGN #1 TO OS2CDCC:TAPE
Update History
- 2021-01-30 → Add: FRAM71 Quick Reference.
- 2021-01-29 → Add: FRAM71 Configuration Spreadsheet.
- 2021-01-26 → Add: Commented 71 OS loader and dumper programs listings.
- 2021-01-25 → Upd: Dump file format, investigation has been done and file format has been updated.
- 2021-01-25 → Upd: Dump file format, added a null character at the end of each line. (note: an investigation is underway to validate the file format)
- 2021-01-25 → Upd: corrected DIAG71 ROM location address, thanks to Dave Frederickson for finding the error.
- 2021-01-24 → Upd: 71ROM1V3: OS1BBBBL Listing Note #1 had the wrong line number, thanks to Robert Prosperi for finding the error.
- 2021-01-24 → Add: Virtual Tapes, File Formats, Programs Output & Programs Listing sections.
- 2021-01-24 → Upd: Thread moved from general to articles forum.
- 2021-01-15 → New: Initial release in general Forum.