Was it possible to extend Noddy?

Everything about programming, including VDP and Sound programming.
User avatar
Crazyboss
Site Admin
Posts: 231
Joined: 09 Aug 2012 21:45
Location: Sweden
Contact:

Re: Was it possible to extend Noddy?

Post by Crazyboss » 15 Oct 2014 18:39

believe jp (hl) is quicker - and the table only need the labels to jump too no need for the jr instruction.

MSX Konami games uses this a lot, and other games too ;) Not common used in MTX games.
//CLAUS - Webmaster at www.mtxworld.dk

Martin A
Posts: 417
Joined: 09 Nov 2013 21:03

Re: Was it possible to extend Noddy?

Post by Martin A » 15 Oct 2014 23:29

JR is a one byte instruction and 1 byte displacement, so with 10 JR's and direct entry to the 11th code section, the table is actually 2 bytes shorter than it would be if it were 11, 2 byte vectors

User avatar
Crazyboss
Site Admin
Posts: 231
Joined: 09 Aug 2012 21:45
Location: Sweden
Contact:

Re: Was it possible to extend Noddy?

Post by Crazyboss » 16 Oct 2014 08:34

Not that is madders :) the JP is quicker than JR but JP use one byte more.
//CLAUS - Webmaster at www.mtxworld.dk

User avatar
thewiz
Posts: 121
Joined: 12 Aug 2012 16:08

Re: Was it possible to extend Noddy?

Post by thewiz » 17 Oct 2014 14:28

I am working on decoding the Noddy ROM routines to see what can be used and how extensions can be added. I don't remember seeing anything like this in any of the club magazines.

Why was it called Noddy?

What I've worked out so far:

SPLOD - 0x2b32. Starting point of Noddy when called from BASIC.

NODENT - 0x2eb8. A bit of setup and then:

MAINLP - 0x2ecd.

On Entry HL = location in Noddy page being processed
Search for next '*' char. (getstar)
Get next char in A that isn't 0xff or a ',' (getchar)
Process char (findinst)
Repeat for all '*' chars.

I've more but run out of time.
THIS is what Memotech is doing now.

User avatar
thewiz
Posts: 121
Joined: 12 Aug 2012 16:08

Re: Was it possible to extend Noddy?

Post by thewiz » 20 Oct 2014 14:08

Next installment:

Code: Select all

getstar		2fc5	Get next char on Noddy page (testbit7)
			Repeat until char on Noddy page = '*'

testbit7	2ffe	A = (HL)
			Return Z if bit 7 not set
			Return NZ if A = (HL) = 0xff
			else Noddy error 53 "Missing Symbol".

getchar		2ff3	Inc HL while (HL) != 0xFF and (HL) != ','

findinst	2f1a	Handle Noddy Instruction
			Call extension routine (USERMOD). HL points to cmd
				addr on Noddy page, A is the cmd.
			Monitor break key (breakmod). Jr to exxxx if it was.
			Check 
			
			If not valid, noddy error 49 "Command not found"

			A = character after *

breakmon	09f2	Monitor break key?

noderr		3028	Node error

ndisplay	2f73	Get noddy page to display, noddy error 63 if not found
			Select VS5 and clear screen
			Clear stack

strhl		02E7	Output a string, terminated by 0xFF with compressed
			spaces.
			
getspace	2fe9	Check (HL) for 0xFF or ','?

pgslc1		0647	?

getsub		3009	calls getchar and then calls "PUTSTACK".
			Could this be getting a parameter?
Next step is to write a proof of concept.
THIS is what Memotech is doing now.

Post Reply