HP Forums
FRAM71 : Threads, Articles, Presentations, Manuals, etc. [2021-01-30] - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html)
+--- Forum: Articles Forum (/forum-14.html)
+--- Thread: FRAM71 : Threads, Articles, Presentations, Manuals, etc. [2021-01-30] (/thread-16219.html)



FRAM71 : Threads, Articles, Presentations, Manuals, etc. [2021-01-30] - Sylvain Cote - 01-24-2021 08:29 PM

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.