2068 Home ROM Corrections – Part I

See all articles from Update April 1991
Publication: Update Magazine
Pub Details: Update April 1991
Date: April 1991
Pages: 17-24

Mr. Frank Davis
513 E. Main St.
Peru, IN 46970

Dear Frank,

Supplying all code corrections is not possible because of attrition, nevertheless, I am enclosing some of what I can reconstruct at this time. Some “corrections” are unique to my system, and do not apply (like my EXROM DOS).

While I was developing corrections, it became clear that I was doing salvage work — repairing sabotage in effect. I am sure you can see how obvious this becomes once repairs have been started. Knowing what NOT to believe made figuring out what to do easier.

I am only human. I don’t remember what I wound up with in my core memory. It just grew. A brief summary is some help, along with data from my book. The picture of EXROM code there (showing censorship), will help to explain what happened to those routines maintaining OPEN # and structures supporting SELECT, OPEN, & CLOSE in RAM.

The restored EXROM code is fairly simple except for SYTAX checking of passed parameters. There is an image of the default table configuration to be copied below SYSCON.

What I am sending you fixes almost all the damage in HOME ROM. I sent Bob Orrfeldt my reconstruction of lower EXROM but lost my copy. It allowed RST calls to replace more complex bank switching instructions in tape routines, saving lots of memory space and eliminating the NMI conflict with LKDOS and others.

You will see that PASSING is restored to HOME bank where it belongs.

Corrections to initialization code in EXROM are pretty simple, though tricky because of good camouflage and snow-job.

Corrections to memory remapping code consist mainly in removing dependence on VIDMOD, redefining it as CONFIG. It is also necessary to account for nonstandard UDG banks. The corresponding FIX table needs extensive updating and the DISPATCH jump table needs the same.

The bank switching services image in EXROM is unusable as it stands. Adequate changes are highly difficult to explain, so some clarification is in order.

The main difficulty with bank switching is to provide a common program access site to all banks. TIMEX use of chunk 3 or 7 conditiionally is a clumsy, but usable convention for simpler systems. This still leaves a problem when transferring bytes from one bank to another. TIMEX uses the stack repeatedly to do this, but using a block of RAM in I/O space is much safer and more efficient. It is also a better place to store the image of bank switching code.

More attention to I/O space leads to a configuration which includes these features, and at the same time makes PC compatibilty possible for clone cards.

Obviously, these are my designs which don’t carry much weight. In spite of this, there are some bank switching code corrections to account for sabotage which should precede any consideration of changes. I have some of this not previously published, and will send it along soon.

Except for barrier corrections, all low level code revisions are to WRITE_BS_REG and READ_BS_REG. This is the only code which directly interfaces to the bank switching controller. The TIMEX version never existed in workable form, so I invented and recommend, my CCOT system in one of its three levels.

Level 1 adds memory beyond 64K contiguously.

Level 2 adds memory beyond 64K in any configuration mappable in RAM.

Level 3 conforms to auto-configuration as provided in EXROM for TIMEX style devices.

Respectfully yours,
William J. Pedersen
[address omitted]

MODEL 1: Each BANK is 64k on 64k boundaries. A total of 256 BANKS can be defined. Each of 8 CHUNKS can be filled from any of these banks in any order. All 16 TS2068 address bits are required to specify a location within a selected BANK. The planned TS2068 method distributed the owner registers to each expansion bank, making multiple ownership a problem solved by programming convention.

There are conceptual problems with this method, but to most users, it is convenient to associate a DEVICE with a BANK. DEVICES cannot be reassigned to other CHUNKS.

Model 1: Current Chunk Owner Table (CCOT), 8 8bit registers, and representative memory map of banks 0-255 (Home, EXROM, Dock)
Model 1: Current Chunk Owner Table (CCOT), 8 8bit registers, and representative memory map of banks 0-255 (Home, EXROM, Dock)

MODEL 2: 8 out of 64 “handles” can be assigned. Each handle accesses a pointer stored in RAM. 64 pointers are available, though only eight are current at any time.

There is enough room in RAM, and enough handles to contain and select multiple memory maps for multitasking, and multiuser network operation. This arrangement covers memory sizes up to 2M, but is obviously easily expanded. A pointer accesses an 8K segment on 8K boundaries.

In effect, CHUNKS are being manipulated instead of BANKS.

Model 2: Current Chunk Owner Table (CCOT), 8 6bit registers with 64*8 RAM, and representative 2M memory map
Model 2: Current Chunk Owner Table (CCOT), 8 6bit registers with 64*8 RAM, and representative 2M memory map
TS2068 Barriers & Fixes, page 19: Interrupts & RST calls, NMI barriers, minor error (wrong error message), major error (screen update/edit speed) - disassembly listings
TS2068 Barriers & Fixes, page 19: Interrupts & RST calls, NMI barriers, minor error (wrong error message), major error (screen update/edit speed) – disassembly listings
TS2068 Barriers & Fixes, page 20: corrected WR_S_P code, SYSCON search misdirection, CHANS and SYNTWO routines
TS2068 Barriers & Fixes, page 20: corrected WR_S_P code, SYSCON search misdirection, CHANS and SYNTWO routines
TS2068 Barriers & Fixes, page 21: CLOSE search table and OPEN search table (in RAM)
TS2068 Barriers & Fixes, page 21: CLOSE search table and OPEN search table (in RAM)
Touring, page 22: CHANS revised - CLOSE and CLCHAN service code
Touring, page 22: CHANS revised – CLOSE and CLCHAN service code
Touring, page 23: OFFSET, OPEN and OPCHAN service code
Touring, page 23: OFFSET, OPEN and OPCHAN service code
Touring, page 24: OPENSC and INSTALL service code, with notes on OPEN SYNTAX
Touring, page 24: OPENSC and INSTALL service code, with notes on OPEN SYNTAX