SPeccy ON the ZeddY

Anything Sinclair ZX Basic related; history, development, tips - differences between BASIC on the ZX80 and ZX81
Post Reply
sirmorris
Posts: 2813
Joined: Thu May 08, 2008 5:45 pm

Re: SPeccy ON the ZeddY

Post by sirmorris » Mon Jan 16, 2012 2:21 pm

OK so here are the changes needed to run SPONZY on ZXpand.

1. solder jumper, wire or otherwise make a connection between pin 26 of the RAM and ROM chips.
2. change the memory controller GAL code to reflect the new memory map.
3. change the PIC firmware to make the ROMBK line an input rather than an output.

Sponzy should then run happily. If access to the SD card hardware were needed then some patches would have to be implemented in the ROM. There may be other changes required, e.g to the refsh/rd signalling, but all the above is easy.

I may well give this a try at some point though it won't be high on my to-do list because It's already super long.

C

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

Re: SPeccy ON the ZeddY

Post by siggi » Sun Jan 22, 2012 10:56 am

Hi Zsolt
today I installed the SPONZY8a ROM on my ZX81 Laptop and now all characters are displayed correctly (no missing pixel lines) :D
But it still flickers on the LCD display of my laptop (especially inverted characters). So the display timing is still a little bit different compared to the ZX81 rom.

Siggi

PS: We could perhaps use the Carry bit to indicate EOF: the readMMCbyte could set CY if the end of file is reached and the writeMMCbyte could be called with CY set to indicate to close the written file.

Edit: Here is the assembler source of the hires routine used by z88dk, which does not flicker. It is derived from Wilf Rigter's hires (WRX) and would probalby also work in SPONZY.
zx81_altint.zip
(2.04 KiB) Downloaded 121 times
The original WRX (the at least the DEMO30 program) also flickers on my Laptop LCD, so the z88dk hires is better ...
My ZX81 web-server: online since 2007
http://zx81-siggi.endoftheinternet.org/index.html

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

Re: SPeccy ON the ZeddY

Post by zsolt » Sun Feb 05, 2012 12:52 pm

Hi Siggi,
siggi wrote:...the display timing is still a little bit different compared to the ZX81 rom.
Yes, it had 3 main difference: the top/bottom margins, scanlines/frame and the length of the VSYNC.

Code: Select all

                         ZX81 ROM         SPONZY
margins                  bottom=top       bottom=top+2
scanlines/frame	       309              314
VSYNC in TS              1233             1410        (measured with EO)
I modded a litle bit: now the 2 margins are same.
I built 3 versions of SPONZY: with 314 scanlines (SPONZY default), with 312 scanlines (PAL standard) and a 310 scanlines/frame variant (nearest to original ZX81).
I tried to reduce also the longer VSYNC time, but no measurable results - don't forget: during this time in Speccy the keyboard is completly decoded (with repeat and delay), and sysvar. LAST-K holds the code of newly pressed key.
(if your display driver is sensitive to this longer VSYNC, we are in trouble :( )
In the attachment you find also the source code of the display routines.

Zsolt

EDIT: the attachment was removed. Here is the final version of SPONZY
Last edited by zsolt on Mon May 28, 2012 9:09 pm, edited 1 time in total.
ZX81 (8K), ENTERPRISE 128, [ZX SPECTRUM (48K,+,+128K,+2,+2A), TS1000, TS1500, TS2068, Cambridge Z88, PRIMO A64 (red)]

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

Re: SPeccy ON the ZeddY

Post by siggi » Sun Feb 05, 2012 3:41 pm

Hi ZSOLT
I testet the versions with 310 and 312 lines and both versions still flicker and some lines (see character "E")are missing:

310 lines:
310_640x480.JPG
310_640x480.JPG (93.52 KiB) Viewed 2705 times
312 lines:
312_640x480.jpg
312_640x480.jpg (94.41 KiB) Viewed 2705 times
The flickering problem with Z88DK was solved, after some additional PUSH/POPS/LD after label "L023E:" were removed (the 3 ";"-prefixed statements around the call to keyboard scan routine "call $2BB").

AFAIK that IS during the sync pulse, which starts during keyboard scan and is stopped with the last line "OUT ($FF),a" :(

Z88DK display routine:

Code: Select all

;; DISPLAY-2
L023E:
	; push	ix          ; Siggi - No point to preserve iy here !! 
	; ld	ix,16384
	CALL    $2BB           ; routine KEYBOARD
	; pop	ix
        LD      BC,($4025)      ; sv LAST_K
        LD      ($4025),HL      ; sv LAST_K
        LD      A,B             ;
        ADD     A,$02           ;
        SBC     HL,BC           ;
        LD      A,($4027)       ; sv DEBOUNCE
        OR      H               ;
        OR      L               ;
        LD      E,B             ;
        LD      B,$0B           ;
        LD      HL,$403B        ; system variable CDFLAG
        RES     0,(HL)          ;
        JR      NZ,L0264        ; to NO-KEY

        BIT     7,(HL)          ;
        SET     0,(HL)          ;
        RET     Z               ;

        DEC     B               ;
        NOP                     ;
        SCF                     ; Set Carry Flag

;; NO-KEY
L0264:  LD      HL,$4027        ; sv DEBOUNCE
        CCF                     ; Complement Carry Flag
        RL      B               ;

;; LOOP-B
L026A:  DJNZ    L026A           ; to LOOP-B

        LD      B,(HL)          ;
        LD      A,E             ;
        CP      $FE             ;
        SBC     A,A             ;
        LD      B,$1F           ;
        OR      (HL)            ;
        AND     B               ;
        RRA                     ;
        LD      (HL),A          ;
        OUT     ($FF),A         ;
Siggi
My ZX81 web-server: online since 2007
http://zx81-siggi.endoftheinternet.org/index.html

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

Re: SPeccy ON the ZeddY

Post by siggi » Mon Feb 06, 2012 10:31 am

zsolt wrote: (if your display driver is sensitive to this longer VSYNC, we are in trouble :( )
Hi ZSOLT,
just an idea: perhaps you could move some of the addinional code (making the VSYNC pulse longer) behind the "out ($FF)" terminating the sync pulse?
That code would than be executed after VSYNC (within the upper border and NMI enabled), but the sync pulse would have its original duration ...

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

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

Re: SPeccy ON the ZeddY

Post by zsolt » Tue Feb 07, 2012 12:04 pm

siggi wrote:The flickering problem with Z88DK was solved, after some additional PUSH/POPS/LD after label "L023E:" were removed
I recalculated the the timings of your code and understand now what you mean. Removing these commands the VSYNC now starts before the HSYNC.
Previously it was reverse: the VSYNC started directly after the HSYNC and this caused the flickering display.
siggi wrote:just an idea: perhaps you could move some of the addinional code (making the VSYNC pulse longer) behind the "out ($FF)" terminating the sync pulse?
I will try.

Regards
Zsolt
ZX81 (8K), ENTERPRISE 128, [ZX SPECTRUM (48K,+,+128K,+2,+2A), TS1000, TS1500, TS2068, Cambridge Z88, PRIMO A64 (red)]

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

Re: SPeccy ON the ZeddY

Post by zsolt » Sun Feb 12, 2012 10:40 am

Hi Siggi,

Here is the next mod. The VSYNC starts during the last HSYNC (if my calculations are correct) and the length of VSYNC is also decreased (saving ~70TS). Try it pls,

Zsolt

EDIT: the attachment was removed. Here is the final version of SPONZY
Last edited by zsolt on Mon May 28, 2012 9:11 pm, edited 1 time in total.
ZX81 (8K), ENTERPRISE 128, [ZX SPECTRUM (48K,+,+128K,+2,+2A), TS1000, TS1500, TS2068, Cambridge Z88, PRIMO A64 (red)]

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

Re: SPeccy ON the ZeddY

Post by siggi » Sun Feb 12, 2012 7:10 pm

Hi ZSOLT
I testet the 310 and 312 line versions. Both show simlilar effects:
Flickering: much much better that ever. Nearly perfect (only a little bit jitter is visible) :mrgreen:

Both versions show a dark (not black, more grey) line at the bottom.
And there are again some pixel lines missing (see character E and F).

310 lines:
310_640x480.JPG
310_640x480.JPG (97.66 KiB) Viewed 2553 times
312 lines
312_640x480.JPG
312_640x480.JPG (103.68 KiB) Viewed 2553 times
(the old Sponzy8a version did show all characters correctly).

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

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

Re: SPeccy ON the ZeddY

Post by siggi » Sun Feb 12, 2012 7:55 pm

I also tested the 314 lines: same as above, but the missing pixel lines are now at character "G" (not E or F).
And the display jitters a little bit more ..

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

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

Re: SPeccy ON the ZeddY

Post by zsolt » Sun Feb 12, 2012 9:29 pm

:cry: :cry: :cry:
ZX81 (8K), ENTERPRISE 128, [ZX SPECTRUM (48K,+,+128K,+2,+2A), TS1000, TS1500, TS2068, Cambridge Z88, PRIMO A64 (red)]

Post Reply