Mistakes in books: l'Oric à Nu

Here is the place to discuss about the magazines (CEO Mag, OUM, Rhetoric, Theoric, Hebdogiciel, ... are all welcome here) and books.
User avatar
Flying Officer
Posts: 189
Joined: Fri Nov 26, 2010 9:11 pm
Location: France PdD

Re: Mistakes in books: l'Oric à Nu

Post by kenneth » Thu May 02, 2019 2:38 am

retroric wrote:
Sun Jan 10, 2016 9:03 pm

A couple of other mistakes I noted regarding tape I/O :
(these comments ONLY apply to ROM 1.1, I've never used routines from ROM 1.0 / Oric 1):

* p.59: oversight for flags at $25A and 25B (missing values):
- $25A (tape merge flag): I don't know the values, sorry...
- $25B (tape load/verify flag): $0 = LOAD, $56 = VERIFY

* p.61: descriptions for $2AD and $2AE are reversed, here are the correct assignments:
- $2AD is the AUTO loading flag (AUTO if different from 0)
- $2AE is the type header ($00 = BASIC, $80 = memory block, $40 = array)

SEE p. 275: $E7FE-$E802 code listing confirms purpose of $2AD
SEE p. 277: comment for $E887 confirms purpose of $2AE

* pp. 257-258: description for header values E0..E9 is a complete mess-up !!

- on p. 257 only E0..E8 are mentioned, while p.258 describes E0...E8, and an additional E9
- on p. 258, the values for E0..E9 are in the WRONG order. On top of that, there is actually NO "E9" header byte !!
"E9" is supposed to hold the "tape speed flag" (0=FAST, SLOW otherwise) but again this is WRONG there are ONLY 9
header bytes (E0..E8) ! Tape speed is set at $24D (oversight p. 58, as mentioned before), and MUST be specified if "slow"
with the ",S" argument to the CLOAD command (NO automatic tape speed detection from the header)
The E0..E8 header on tape is IMMEDIATELY followed by the NUL-terminated filename (0 to 16 characters max)

Here are the CORRECT meanings of E0..E8 with matching page 3 addresses described p. 61:

Code: Select all

page 3			tape header
addresses		values
see p.61		see pp. 257-258
 --------	------------------
$02B0			E0		: Header: Integer flag (only for ROM V1.1: STORE and RECALL Basic instructions)
$02AF			E1		: Header: String flag			
$02AE			E2		: Type ($00 = Basic, $80 = Memory block, $40 = Basic array
$02AD			E3		: 'AUTO' loading flag ($0 = FALSE, otherwise TRUE)
$02AC-2AB	  E4-E5	: Program/Block end address  Low-High (LL-HH) : $2AC=HH, $2AB=LL
$02AA-2A9	  E6-E7	: Program/block start address LL-HH ($2AA=HH, $2A9=LL)
$02A8			E8		: Unused

I meant to add this comment ages ago, but I forgot and was reminded just yesterday while chatting to Symoon at the CEO meetup.

Sorry for digging up this old topic, I'm sure pretty everyone already knows about this, but maybe this can help someone!

This helped me for my project. :mrgreen:

Post Reply