Is the Sponzy-Rom in the ZIP a special version (patched?) or ZSOLT's original version?
Just to avoid possible confusion ...
Siggi
Is the Sponzy-Rom in the ZIP a special version (patched?) or 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.
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
It is more than possible just use the sponzy2018.rom above - it contains Erik's patch.
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).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).
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
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'