Welcome, Guest. Please login or register.


Author Topic: Changing the EXOS font (Read 1839 times)

Offline dangerman

  • User
  • *
  • Posts: 95
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 81.0 Firefox 81.0
    • View Profile
Re: Changing the EXOS font
« Reply #15 on: 2020.December.03. 23:43:43 »
the fonts need to be processed before they are imported, and the EXOS ROM needs to have its checksum recalculated after the patching is done, so it was easier to write a quick C program to do the work.

Ah yes - the checksum!

Offline elmer

  • EP fan
  • *
  • Posts: 193
  • Country: us
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 83.0 Firefox 83.0
    • View Profile
Re: Changing the EXOS font
« Reply #16 on: 2020.December.05. 17:28:38 »
It has taken me a while to think of this, but I finally realised today that there is one solution that might give the best results (IMHO) for both UK and International users ...

That is to use the "-hi" font for its compatibility when in ":UK" keyboard mode, which is what you need to use anyway when running IS-FORTH or IS-LISP, and then use the "-lo" font with its better accents when in ":BRD"/":ESP"/":HUN" keyboard modes.

This method is working really well, and doing things this way also solves the problem of BASIC (or other language) programs that reset the ROM font, and expect the original font baseline (the 7-pixel above / 2-pixel below positioning).

Moving the font down by one pixel when entering ":BRD"/":ESP"/":HUN" keyboard modes is easy, but then a number of characters in the font need to be fixed to take account of the lower baseline (or the updated look of the improved accents).

Here is what the patch code for the language ROMs looks like. It fits in less than 256 bytes, and there is plenty of space for that at the end of each of the language ROMs ...

; *****************************************************************************
; *****************************************************************************
; *****************************************************************************
;
; ENTERPRISE LANGUAGE ROM FIXUP
;
; Moves EXOS ROM font down by 1 line to make room for nicer accents.
;
; Patch language ROM at $DEEB (-$C000) to call "drop_font" instead of $DF4B.
;
; Assemble two files ...
;
; SPANISH=0
;
;   sjasmplus\sjasmplus exosdecode.s --lst --raw=language-patch-low.bin
;
; SPANISH=1
;
;   sjasmplus\sjasmplus exosdecode.s --lst --raw=language-patch-esp.bin
;
; *****************************************************************************
; *****************************************************************************
; *****************************************************************************


                if      1

SPANISH         =       0                       ; "!?" glyphs needed for Spanish.

                org     $FF00                   ; After moving hacker's name.

drop_font:      ld      a,(hl)                  ; Are we setting ":UK" mode?
                inc     a
                ret     z

                push    hl                      ; Incoming ISO-646 font address.

                ld      hl, .dummy_data         ; Find out the address of the
                call    $DF4B                   ; font in Nick RAM.

                ld      de, $047F               ; Move EXOS font down by
                add     hl, de                  ; one line.
                ex      de, hl
                ld      hl, $FF80
                add     hl, de
                ld      bc, $0400
                lddr

                ld      b, $80                  ; Clear top line of font.
                xor     a
.clear:         ld      (de), a
                dec     de
                djnz    .clear

                ld      hl, $0E + 1
                add     hl, de
                ld      (hl), $7E               ; Fix top line of cursor.
                ld      hl, $1F + 1
                add     hl, de
                ld      (hl), $FF               ; Fix top line of block.

                ld      hl, .fixup_data         ; Customize font to improve
                call    $DF4B                   ; accents and fix descenders.

                pop     hl                      ; Restore ISO-646 font address.
                jp      $DF4B

.fixup_data:    db      $02                     ; 'A'-umlaut
                ds      9
                db      $03                     ; 'O'-umlaut
                ds      9
                db      $04                     ; 'U'-umlaut
                ds      9
                db      $05                     ; 'A'-acute
                ds      9
                db      $08                     ; 'e'-acute
                ds      9
                db      $0A                     ; 'a'-grave
                ds      9
                db      $12                     ; 'a'-umlaut
                ds      9
                db      $13                     ; 'o'-umlaut
                ds      9
                db      $14                     ; 'u'-umlaut
                ds      9
                db      $15                     ; 'a'-acute
                ds      9
                db      $18                     ; 'e'-grave
                ds      9
                db      $67                     ; 'g'
                ds      9
                db      $6A                     ; 'j'
                ds      9
                db      $6E                     ; 'n' (to remove serif)
                ds      9
                db      $70                     ; 'p'
                ds      9
                db      $71                     ; 'q'
                ds      9
                db      $75                     ; 'u' (to add serif)
                ds      9
                db      $79                     ; 'y'
                ds      9

                if      SPANISH
                db      $21                     ; '!' (only for spanish)
                ds      9
                db      $3F                     ; '?' (only for spanish)
                ds      9
                endif

.dummy_data:    db      $FF

                endif


Offline elmer

  • EP fan
  • *
  • Posts: 193
  • Country: us
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 83.0 Firefox 83.0
    • View Profile
Re: Changing the EXOS font
« Reply #17 on: 2020.December.16. 22:14:16 »
Here is what I hope is the final version of the new font ROMs, unless somebody provides feedback requesting a change.

I have now also modified both EPDOS and TPT to contain new versions of HFONT, to match the changes in the new EXOS font, and I have included new versions of the EXDOS 1.4 ROMs that changes the embedded font checksums so that EXDOS recognizes the new fonts.

As for the font itself, there have been changes to the stop the "(C)" symbol from being chopped off in 80-column mode, the "r" character has been changed to make it fit the style of the rest of Enterprise font, and the "/\" characters have been made full height so that they look better to anyone that has been using a PC for the last 30 years.

Enjoy! :ds_icon_cheesygrin:


Online gflorez

  • EP addict
  • *
  • Posts: 3121
  • Country: es
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Firefox 83.0 Firefox 83.0
    • View Profile
Re: Changing the EXOS font
« Reply #18 on: 2020.December.16. 22:33:52 »
Great! You have worked a lot on it. I will test it, sure.

---

On the past, I remember there was an utility to load a different font on the EP, but it worked as a whole definition on a file.

Also, there was an utility with a bunch of fonts, that were swapped with a command.

The problem with such programs was that they ceased to work with the language Rom.