SPeccy ON the ZeddY

Anything Sinclair ZX Basic related; history, development, tips - differences between BASIC on the ZX80 and ZX81
User avatar
siggi
Posts: 883
Joined: Thu May 08, 2008 9:30 am
Location: Dauernheim, Germany
Contact:

Re: SPeccy ON the ZeddY

Post by siggi » Mon Oct 15, 2018 1:53 pm

olofsen wrote:
Mon Oct 08, 2018 11:25 pm
Attached are a Sponzy version, and a ZX81 program to start it, so that TAPs such as FLIPPIT can be loaded via USB on the ZXmore.
Is the Sponzy-Rom in the ZIP a special version (patched?) or ZSOLT's original version?
Just to avoid possible confusion ...

Siggi
My ZX81 web-server: online since 2007
http://zx81-siggi.endoftheinternet.org/index.html

olofsen
Posts: 169
Joined: Wed Jan 08, 2014 12:29 pm

Re: SPeccy ON the ZeddY

Post by olofsen » Tue Oct 16, 2018 8:00 am

Yes, it is a special version (with a tiny patch for the tape loading) of the latest Sponzy I obtained from Zsolt.

Shaun_B
Posts: 451
Joined: Wed Apr 22, 2009 10:22 am

Re: SPeccy ON the ZeddY

Post by Shaun_B » Tue Oct 16, 2018 11:24 pm

Unfortunately I've not been able to get this to work - running the file at instance one takes me to the SPONZY instance somehow (I assime instance 2 but also I have the SPONZY on instance 7). But I can't seem to load any TAP files (or at least I don't know how to).

Do you have a dumb-down instructions?

Regards,

Shaun.

User avatar
zsolt
Posts: 197
Joined: Wed Apr 20, 2011 11:43 am
Location: Fót, Hungary

Re: SPeccy ON the ZeddY

Post by zsolt » Wed Oct 17, 2018 11:10 am

Hi,
siggi wrote:
Mon Oct 15, 2018 1:53 pm
Is the Sponzy-Rom in the ZIP ..... ZSOLT's original version?
Not exactly: it is different in the "startup" and the "new" section and "DI" instructions have been removed from the entire code.
And Erik found a bug during tests of his driver program, which has been fixed.

And now i made some changes in the NMI handler too:

Code: Select all

;
; ------------------------------------
; THE 'NON-MASKABLE INTERRUPT' ROUTINE
; ------------------------------------
;
L0066:				; size	! Ts	! 
	push af			; 1	! 11	! save ACC & Flags

;;-	ld a,(NMICNT)		; 3	! 13	! decrement
	ld a,i			; 2	! 9	!  decrement

	dec a			; 1	! 4	! and store

;;-	ld (NMICNT),a		; 3	! 13	! counter
	ld i,a			; 2	! 9	! counter

	jr z,NMI_1		; 2	! 7/12	! --> L003A
	;
	pop af			; 1	! 10	! restore ACC & Flags
	;
	ret			; 1	! 10	! cont.orig.task

This mod gives back 8 Tstates / NMI to the user program, so speed is increasing (~5%). :D

Enjoy,
Zsolt
sponzy2018.zip
(12.81 KiB) Downloaded 82 times
ps: I try to incorporate also the novelties of the "bigbang" ROM
ZX81 (8K), ENTERPRISE 128, [ZX SPECTRUM (48K,+,+128K,+2,+2A), TS1000, TS1500, TS2068, Cambridge Z88, PRIMO A64 (red)]

User avatar
siggi
Posts: 883
Joined: Thu May 08, 2008 9:30 am
Location: Dauernheim, Germany
Contact:

Re: SPeccy ON the ZeddY

Post by siggi » Fri Nov 09, 2018 11:05 am

Hi Zsolt
would it be sufficient to copy the bytes from $66 to "ret" into Erik's patched rom to have the full speed also with this patched rom?

And is it not possible to have only one rom (including Erik's patches)?

Siggi
My ZX81 web-server: online since 2007
http://zx81-siggi.endoftheinternet.org/index.html

User avatar
zsolt
Posts: 197
Joined: Wed Apr 20, 2011 11:43 am
Location: Fót, Hungary

Re: SPeccy ON the ZeddY

Post by zsolt » Fri Nov 09, 2018 1:51 pm

Hi,
siggi wrote:
Fri Nov 09, 2018 11:05 am
And is it not possible to have only one rom (including Erik's patches)?
It is more than possible :D just use the sponzy2018.rom above - it contains Erik's patch.
Regards,
Zsolt
ZX81 (8K), ENTERPRISE 128, [ZX SPECTRUM (48K,+,+128K,+2,+2A), TS1000, TS1500, TS2068, Cambridge Z88, PRIMO A64 (red)]

User avatar
siggi
Posts: 883
Joined: Thu May 08, 2008 9:30 am
Location: Dauernheim, Germany
Contact:

Re: SPeccy ON the ZeddY

Post by siggi » Fri Nov 09, 2018 8:20 pm

Shaun_B wrote:
Tue Oct 16, 2018 11:24 pm
Unfortunately I've not been able to get this to work - running the file at instance one takes me to the SPONZY instance somehow (I assime instance 2 but also I have the SPONZY on instance 7). But I can't seem to load any TAP files (or at least I don't know how to).
AFAIK it does not work on all filenames. Currently only a-z and numbers could be used as filename (but not long filenames, only 8.3 format).
And the program name inside the TAP must exactly match the filename (uppercase/LOWERCASE!) (e. g. file "jsw16k.tap" containing program "jsw16k").
Load it using command LOAD "jsw16k"
Examples.zip
(6.5 KiB) Downloaded 68 times
But I don't know what to do, if the program name inside the TAP is longer or does contain other characters ...

Siggi

Edit: Try this program (I were able to load it):
viewtopic.php?f=14&p=32310#p32282
My ZX81 web-server: online since 2007
http://zx81-siggi.endoftheinternet.org/index.html

User avatar
siggi
Posts: 883
Joined: Thu May 08, 2008 9:30 am
Location: Dauernheim, Germany
Contact:

Re: SPeccy ON the ZeddY: Graphics?

Post by siggi » Sat Nov 10, 2018 11:12 am

Hi ZSOLT
I just tried to get the graphic chars of Sponzy rom (pressing SHIFT-G)
chars 1-8 and Q-Y show the correct characters (like on ZX81)
But chars A-H give wrong pixel patterns.

Don't this ZX81 graphic chars exist on Speccy?

Siggi
My ZX81 web-server: online since 2007
http://zx81-siggi.endoftheinternet.org/index.html

User avatar
zsolt
Posts: 197
Joined: Wed Apr 20, 2011 11:43 am
Location: Fót, Hungary

Re: SPeccy ON the ZeddY

Post by zsolt » Sun Nov 11, 2018 6:44 pm

Hi Siggi,

No, these are ZX81-specific patterns, but ...
In SPONZY they are available as UDGs (chr$ 144 ... chr$ 164), which are defined during the startup:

Code: Select all

L0000:
	out ($FD),a		; Switch NMI off!

	LD	DE,$FFFF	; Set pointer to top of possible physical RAM.
	JP	L11CB		; Jump forward to common code at START-NEW.

; -------------------
;; START-NEW
; -----------------------

L11CB:
	ld a,d			;
	and e			;
	ld b,a			; Save the flag to control later branching.
L11CE:
	ld a,$3F		;

; -----------------------
; THE 'RAM CHECK' SECTION
; -----------------------


; then later...


	inc b			; now test if we arrived here from NEW.
	jr nz,RAM_SET		; forward to RAM-SET if we did.

;	This section applies to START only.
;
	ld sp,hl		; set up the machine stack pointer.
	call setPRAMT		; set P-RAMT to the highest working RAM
				; address.
	ld de,$3EAF		; address of last byte of 'U' bitmap in ROM.

; Copy INVERSE of the standard characters A - U.
; there are 21 user defined graphics.

	ld bc,$A830		; 21 standard (B) and 6 extra ZX81 chars (C).
FILL_INV
	ld a,(de)		; get pattern byte
	cpl			; invert it
	ld (hl),a		; put pattern byte
	dec hl			; decrement
	dec de			; the pointers
	djnz FILL_INV		; next

	inc hl			; update to start of inv. 'A' in RAM.
	ld ($5C7B),hl		; make UDG system variable address the first bitmap.

	ld de,$004F		; address of extra characters
	add hl,de		; set pointer

	ex de,hl		; switch pointers
	ld hl,$3CFF		; last address of extra characters in ROM
	lddr			; fill

	ld hl,($5C7B)		; restore
	dec hl			; pointer

	ld c,$40		; set the values of
	ld ($5C38),bc		; the PIP and RASP system variables.

;	The NEW command path rejoins here.
RAM_SET
After the normal startup you can use (and redefine) the UDG set.
After the normal startup you can use (and redefine) the UDG set.
the UDGs from keyboard in "G" mode
the UDGs from keyboard in "G" mode
I think, i found the reason of the problem: if 'DE' <> $FFFF at beginning of the 'START-NEW' section, then value of 'B' will be other than $FF. This means that UDG initialization is not done - as in case of the 'NEW' instruction.

The solution for 'ZTOS.p':

Code: Select all

	ld de,LAST_RAM_ADDR	; the latest address in front of the USB-driver
	ld b,$FF		; signal of 'STARTUP'
	jp L11CE		; entry point of 'START-NEW'
It's my fault, because we (Erik and me) did not talk about the startup :cry: sorry.
Zsolt
ZX81 (8K), ENTERPRISE 128, [ZX SPECTRUM (48K,+,+128K,+2,+2A), TS1000, TS1500, TS2068, Cambridge Z88, PRIMO A64 (red)]

olofsen
Posts: 169
Joined: Wed Jan 08, 2014 12:29 pm

Re: SPeccy ON the ZeddY

Post by olofsen » Sun Nov 11, 2018 7:31 pm

The attachment on the previous page with ZTOS.P is updated to do the startup as described in the previous post, and I think it is indeed solved :)

Post Reply