Merge branch 'topic-datapoint'

This commit is contained in:
Rob Hagemans 2023-01-02 18:30:03 +00:00
commit fcd82b1e36
7 changed files with 1078 additions and 0 deletions

View File

@ -0,0 +1,962 @@
08: --------
--------
--------
---##---
--#-----
-#######
--#-----
---##---
--------
--------
--------
--------
18: --------
--------
--------
----##--
------#-
-#######
------#-
----##--
--------
--------
--------
--------
20: --------
--------
--------
--------
--------
--------
--------
--------
--------
--------
--------
--------
21: --------
----#---
----#---
----#---
----#---
----#---
----#---
--------
----#---
----#---
--------
--------
22: --------
---#--#-
---#--#-
---#--#-
---#--#-
--------
--------
--------
--------
--------
--------
--------
23: --------
--------
---#--#-
---#--#-
--######
---#--#-
---#--#-
--######
---#--#-
---#--#-
--------
--------
24: --------
----#---
--#####-
-#--#--#
-#--#---
--#####-
----#--#
-#--#--#
--#####-
----#---
--------
--------
25: --------
--#----#
-#-#---#
--#---#-
-----#--
----#---
---#----
--#---#-
-#---#-#
-#----#-
--------
--------
26: --------
---##---
--#--#--
--#--#--
--#-#---
---#----
--#-#--#
-#---##-
-#---#--
--###-##
--------
--------
27: --------
------#-
-----##-
----##--
---##---
---#----
--------
--------
--------
--------
--------
--------
28: --------
----###-
---#----
--#-----
--#-----
--#-----
--#-----
--#-----
---#----
----###-
--------
--------
29: --------
--###---
-----#--
------#-
------#-
------#-
------#-
------#-
-----#--
--###---
--------
--------
2A: --------
--------
----#---
--#-#-#-
---###--
-#######
---###--
--#-#-#-
----#---
--------
--------
--------
2B: --------
--------
----#---
----#---
----#---
-#######
----#---
----#---
----#---
--------
--------
--------
2C: --------
--------
--------
--------
--------
--------
----##--
----##--
-----#--
----#---
--------
--------
2D: --------
--------
--------
--------
--------
--------
-#######
--------
--------
--------
--------
--------
2E: --------
--------
--------
--------
--------
--------
--------
--------
----##--
----##--
--------
--------
2F: --------
-------#
-------#
------#-
-----#--
----#---
---#----
--#-----
-#------
-#------
--------
--------
30: --------
---####-
--#----#
--#---##
--#--###
--#-##-#
--###--#
--##---#
--#----#
---####-
--------
--------
31: --------
----#---
---##---
--#-#---
----#---
----#---
----#---
----#---
----#---
--#####-
--------
--------
32: --------
---####-
--#----#
--#----#
-------#
------#-
-----#--
----#---
---#----
--######
--------
--------
33: --------
---####-
--#----#
-------#
-------#
----###-
-------#
-------#
--#----#
---####-
--------
--------
34: --------
------#-
-----##-
----#-#-
---#--#-
--#---#-
--######
------#-
------#-
------#-
--------
--------
35: --------
--######
--#-----
--#-----
--#-----
---####-
-------#
-------#
--#----#
---####-
--------
--------
36: --------
---####-
--#----#
--#-----
--#-----
--#####-
--#----#
--#----#
--#----#
---####-
--------
--------
37: --------
--######
--#----#
-------#
-------#
------#-
-----#--
----#---
----#---
----#---
--------
--------
38: --------
---####-
--#----#
--#----#
--#----#
---####-
--#----#
--#----#
--#----#
---####-
--------
--------
39: --------
---####-
--#----#
--#----#
--#----#
---#####
-------#
-------#
--#----#
---####-
--------
--------
3A: --------
--------
----##--
----##--
--------
--------
----##--
----##--
--------
--------
--------
--------
3B: --------
--------
----##--
----##--
--------
--------
----##--
----##--
-----#--
----#---
--------
--------
3C: --------
------#-
-----#--
----#---
---#----
--#-----
---#----
----#---
-----#--
------#-
--------
--------
3D: --------
--------
--------
--------
--######
--------
--------
--######
--------
--------
--------
--------
3E: --------
--#-----
---#----
----#---
-----#--
------#-
-----#--
----#---
---#----
--#-----
--------
--------
3F: --------
---####-
--#----#
--#----#
-------#
-----##-
----#---
----#---
--------
----#---
--------
--------
40: --------
--#####-
-#-----#
-#---###
-#--#--#
-#--#--#
-#---###
-#------
-#------
--######
--------
--------
5B: --------
--#####-
--#-----
--#-----
--#-----
--#-----
--#-----
--#-----
--#-----
--#####-
--------
--------
5C: --------
-#------
-#------
--#-----
---#----
----#---
-----#--
------#-
-------#
-------#
--------
--------
5D: --------
--#####-
------#-
------#-
------#-
------#-
------#-
------#-
------#-
--#####-
--------
--------
5E: --------
--------
--------
--------
--------
--------
----#---
---#-#--
--#---#-
-#-----#
--------
--------
5F: --------
--------
--------
--------
--------
--------
--------
--------
--------
-#######
--------
--------
60: --------
---#----
---##---
----##--
-----##-
------#-
--------
--------
--------
--------
--------
--------
7B: --------
----###-
---#----
---#----
---#----
--#-----
---#----
---#----
---#----
----###-
--------
--------
7C: --------
----#---
----#---
----#---
----#---
----#---
----#---
----#---
----#---
----#---
--------
--------
7D: --------
--###---
-----#--
-----#--
-----#--
------#-
-----#--
-----#--
-----#--
--###---
--------
--------
7E: --------
--------
--------
--------
--------
--##----
-#--#--#
-----##-
--------
--------
--------
--------
7F: --------
----#---
----#---
----#---
-#--#--#
-##-#-##
-#--#--#
----#---
----#---
----#---
--------
--------
41: --------
--#####-
-#-----#
-#-----#
-#-----#
-#######
-#-----#
-#-----#
-#-----#
-#-----#
--------
--------
42: --------
-######-
-#-----#
-#-----#
-#-----#
-######-
-#-----#
-#-----#
-#-----#
-######-
--------
--------
43: --------
--#####-
-#-----#
-#------
-#------
-#------
-#------
-#------
-#-----#
--#####-
--------
--------
44: --------
-#####--
-#----#-
-#-----#
-#-----#
-#-----#
-#-----#
-#-----#
-#----#-
-#####--
--------
--------
45: --------
-#######
-#------
-#------
-#------
-######-
-#------
-#------
-#------
-#######
--------
--------
46: --------
-#######
-#------
-#------
-#------
-######-
-#------
-#------
-#------
-#------
--------
--------
47: --------
--#####-
-#-----#
-#------
-#------
-#---###
-#-----#
-#-----#
-#-----#
--#####-
--------
--------
48: --------
-#-----#
-#-----#
-#-----#
-#-----#
-#######
-#-----#
-#-----#
-#-----#
-#-----#
--------
--------
49: --------
--#####-
----#---
----#---
----#---
----#---
----#---
----#---
----#---
--#####-
--------
--------
4A: --------
-----###
------#-
------#-
------#-
------#-
------#-
-#----#-
-#----#-
--####--
--------
--------
4B: --------
-#-----#
-#----#-
-#---#--
-#--#---
-#-#----
-##-#---
-#---#--
-#----#-
-#-----#
--------
--------
4C: --------
-#------
-#------
-#------
-#------
-#------
-#------
-#------
-#------
-#######
--------
--------
4D: --------
-#-----#
-##---##
-#-#-#-#
-#--#--#
-#-----#
-#-----#
-#-----#
-#-----#
-#-----#
--------
--------
4E: --------
-#-----#
-##----#
-##----#
-#-#---#
-#--#--#
-#---#-#
-#----##
-#----##
-#-----#
--------
--------
4F: --------
---###--
--#---#-
-#-----#
-#-----#
-#-----#
-#-----#
-#-----#
--#---#-
---###--
--------
--------
50: --------
-######-
-#-----#
-#-----#
-#-----#
-######-
-#------
-#------
-#------
-#------
--------
--------
51: --------
--#####-
-#-----#
-#-----#
-#-----#
-#-----#
-#---#-#
-#---#-#
-#----#-
--####-#
--------
--------
52: --------
-######-
-#-----#
-#-----#
-#-----#
-######-
-#--#---
-#---#--
-#----#-
-#-----#
--------
--------
53: --------
--#####-
-#-----#
-#------
-#------
--#####-
-------#
-------#
-#-----#
--#####-
--------
--------
54: --------
-#######
----#---
----#---
----#---
----#---
----#---
----#---
----#---
----#---
--------
--------
55: --------
-#-----#
-#-----#
-#-----#
-#-----#
-#-----#
-#-----#
-#-----#
-#-----#
--#####-
--------
--------
56: --------
-#-----#
-#-----#
-#-----#
-#-----#
-#-----#
-#-----#
--#---#-
---#-#--
----#---
--------
--------
57: --------
-#-----#
-#-----#
-#-----#
-#-----#
-#--#--#
-#--#--#
-#-#-#-#
-##---##
-#-----#
--------
--------
58: --------
-#-----#
-#-----#
--#---#-
---#-#--
----#---
---#-#--
--#---#-
-#-----#
-#-----#
--------
--------
59: --------
-#-----#
-#-----#
--#---#-
---#-#--
----#---
----#---
----#---
----#---
----#---
--------
--------
5A: --------
-#######
-------#
------#-
-----#--
----#---
---#----
--#-----
-#------
-#######
--------
--------
01: --------
--------
--------
------#-
-----##-
----###-
---####-
--#####-
-######-
#######-
--------
--------
02: --------
--------
--------
--------
--------
--------
--------
--------
----####
--------
--------
--------

17
datapoint/README.md Normal file
View File

@ -0,0 +1,17 @@
Datapoint font
==============
This directory contains the ROM font of the Datapoint 8600.
ROM images were read out by the crew of the museum of computer history in Visselhövede, Germany, and are provided here:
[905-007-1.bin](https://mecrisp.sourceforge.net/Datapoint/905-007-1.bin)
[905-008-1.bin](https://mecrisp.sourceforge.net/Datapoint/905-008-1.bin)
The font data is in 905-008-1.bin and starts at $10AF.
Font data in the ROM image is not directly mapped as a character generator but is read by the "bios" of the machine and stored into the actual character RAM area. The font is a 8x12 font, but only uppercase characters were available, with the lowercase characters later loaded by the operating system (RMS 2.8.J) for which unfortunately no data exists.
The font data is organised as nine bytes for each character, with the MSB of these data bytes always 0 for inter-character spacing. Therefore, data exists for 7x9 bitmaps. Three empty lines are added when loading this font, one line on top and two lines at the bottom as seen when comparing with the cursor on the real machine in which has all twelve lines set.
Bytes with MSB set denote the place in the character table (when masked with $7F). Then nine bytes of graphics data follow.

View File

@ -0,0 +1,99 @@
{ -----------------------------------------------------------------------------
A small tool to extract 8x12 bitmap fonts from
Datapoint 8600 CP/RIM card ROMs
Compile with the Freepascal Compiler: fpc datapoint-8x12.pas
Usage: datapoint-8x12 905-008-1.bin Datapoint-8600.draw
----------------------------------------------------------------------------- }
{
This tool designed to extract the font data from the ROM contents of
a Datapoint 8600 machine. Font data is not directly mapped as a character
generator but is read by the "bios" of the machine and stored into the actual
character RAM area. The font is a 8x12 font, but only uppercase characters
were available, with the lowercase characters later loaded by the operating
system (RMS 2.8.J).
The font data is organised as nine bytes for each charater, with the MSB
of these data bytes always 0 for inter-character spacing. Therefore, data exists
for 7x9 bitmaps. Three empty lines are added when loading this font, one line on
top and two lines at the bottom as seen when comparing with the cursor in
the screenshot of the date/time prompt which has all twelve lines set.
Bytes with MSB set denote the place in the character table (when masked with $7F).
Then nine bytes of graphics data follow.
When no place-in-the-character-table byte appears, continue with the next place.
Note that the shape of "," on the screenshot with lowercase letters differs
from the data in the ROM, so this might be a completely different font for which
unfortunately no further data exists.
}
uses sysutils;
function byte2hex(zahl : byte) : string;
const
hexa : array [0..15] of char = '0123456789ABCDEF';
begin
byte2hex := hexa[zahl shr 4] + hexa[zahl and 15];
end;
function byte2str(c : byte) : string;
var h : string = '';
var i : integer;
begin
for i := 7 downto 0 do
begin
if (c shr i) and 1 = 1 then h := h + '#' else h := h + '-';
end;
byte2str := h;
end;
var binary : file of byte;
fontfile : text;
i, k : integer;
character : array[1..9] of byte;
asciioffset : integer = 0;
begin
assign(binary, paramstr(1));
reset(binary);
assign(fontfile, paramstr(2));
rewrite(fontfile);
seek(binary, $10AF);
for k := 0 to 73 do
begin
read(binary, character[1]);
if (character[1] and $80) = $80 then
begin
asciioffset := character[1] and $7F;
read(binary, character[1]);
end;
for i := 2 to 9 do read(binary, character[i]);
write(fontfile, byte2hex(asciioffset), ':');
writeln(fontfile, #9, byte2str(0));
for i := 1 to 9 do writeln(fontfile, #9, byte2str(character[i]));
writeln(fontfile, #9, byte2str(0));
writeln(fontfile, #9, byte2str(0));
writeln(fontfile);
inc(asciioffset);
end;
close(fontfile);
close(binary);
end.

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 573 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB