; Change this to where your .bin lives
; The file is available @
; http://www.desdes.com

fG:\Spectrum\DesDes\inv_load.bin

; For versions of Zeus earlier than v2.01
; your .DEF file window must be this wide   >
; Otherwise it won't work.
;
;
; I'm vaguely contactable @
; kilby.cta102@gmail.com

; Hopefully I will have a compatable
; save routine hacked together soon
; though from this you shouldn't
; need me to do it




c; Loader for Design Design games
c;
c; Currently supports
c; Rommels Revenge               $5b00
c; Revenge of the Body .....     $5b00
c; HOTT                          $6000
c;


; Notes :
; The sync byte is $42 but I don't think
; it's a reference to HHGTTG (for once!)
; $42 = %01000010 and allows the same sync
; value to be used with the standard ZX
; load/save routine (it's the same when
; viewed bass ackwards)

; To get HOTT to load & run change
; Game_Entry      DEFW $5B00 
; to
; Game_Entry      DEFW $6000

rf000 f142
_
c; goat fish
_
_
; Equates
d 4000 ScreenBase
d 4001 ScreenBase+1
d 5800 Attrs



LF000 Entry
LF06B Attr_to_IX

LF122 LDEdge1
LF124 LDEdge1Delay
LF128 LDSample
LF138 border_col
LF076 tLoad_vector
LF11c Game_Entry
LF0ED LD-FLAG


LF02B LD-BREAK
LF02C LD-START
LF034 LD-WAIT
LF11E LDEDGE2
LF040 LDLEADER
LF04F LDSYNC
LF072 LDLOOP
LF102 LD8BITS_1

LF078 wrMem_IX_1
LF085 wrMem_IX_2
LF092 wrMem_IX_3
LF09f wrScreen_IY
LF0CD NextScanline

LF0C2 tape_to_IY
of000

c; Clear screen
_
_
i 10
;i 55
_
c; Border colour for leader
_

i 55
;i 4f

_
c; Get 1st IY Byte for screen addr
c; From Tape
_
i 0d

c; Only jp for sync byte ($42)
_
i 38
_
c; Decrement for scanline position
_
i 1
_
c; Not EOL
_
i 2
_
c; Load next scanline addr from tape
_
i a
_
c; JP NZ never taken in real file
c; ONLY taken if 0 is loaded on byte 192
c; Probably to stop non DESDES file from
c; being loaded.
_
i 3
_
c; Get IYL updates from tape executed
c; $C0 times during load
_
i 8
_
c; Loads IYL from tape
_
i b
_
c; Loads IYH from tape
c; and sets up for loading scanline
_

i 14
_
c; counter for complete scanline
_
i2
_
c; If IY=0 then load 1 more scanline
c; and set up for exucuting game
_
i2
_
c; Vector for game execution
i 1b

_
_
c; Set to 80 if rotating bits like Sinclair
_

i 9
_
_
c; Normal Sinclair does RL L_

i 13
_
c; Game execute addr
_
w 2
_
_

i 19
_
c; Value of XOR controls border colour
c; $F* for data $F9 for leader
_

i b

l.end


