Your Spectrum
Issue 7, September 1984 - Letters Page
Home Contents KwikPik
.

KATAPILLA METAMORPHOSIS

With reference to your Krazy Katapilla program, may I be so bold as to indicate what I think are errors and general cock-ups in said program?
The Nudge facility cannot be used to complete (or even add to) the Katapilla - to cure, add line: 395 GO TO 860.
(Actually it wasn't supposed to, but thanks for the tip. TP.)
Also, you start with nine credits and still have a go left when the credit counters shows 000! To cure, change CRE in line 1710 to LET CRE=11 and also make line 110 read:

LET CRE=CRE-1: IF CRE=0 THEN PRINT AT 15,23; PAPER 8; "0": INPUT "NO CREDIT - PRESS ENTER FOR MORE"; LINE A$: LET CRE=10: GO TO 120

This leaves the display ready to go when you run out of money.
(The original does start with ten credits - but credits are taken off before you go, hence the first display is of nine credits and the program shows 000 credits on your last spin. TP).
Nudge is too infrequent (I didn't want to make it too easy. TP) - to cure this, change line 1630 to RND>.75. I also changed RND to >.6 in 1350. (Well done! TP.)
How about renumbering line 1210-1310 to 2-12, deleting 1210-1310, moving line 10 to 15, adding a line 1; GO TO 15 and changing GO SUB 1210 in lines 130, 340, 370, 400, 430, 460, 490, 1480, 1540, 1590 to GO SUB 2. This will marginally speed up the reels. (Ha! TP.)
I also changed three Bells to give a reward of £2, by altering the '100' in line 2040 to 200 and the first '£1' in line 3080 to £2. And I added a SAVE line - where's yours? (It's not necessary to waste program space with a line that the program never calls itself TP.)
Just in case you're interested, I did all these changes, then attempted to renumber using BetaBasic; however, it failed - not taking old line 110!
Mr Harris, Billericay

Oh well, nothing wrong with a little customisation I suppose. Troubleshooting Pete.
.

UNZIPPING ZAPPED ZIP

I'd like to take this opportunity to clear up a few more points that have arisen out of the ZIP articles. I'm sorry to say that YS seem to have made a bit of a pig's ear out of another lot of
F O R U M

Is there something you're not telling us? Write to Forum, Your Spectrum, 14 Rathbone Place, London W1P 1DE.
that I took home issue 4 and prepared to enter Andrew Pennell's Dumps of Distinction program, only to read - with mounting horror - that his routine "rules out the old Epsons (MX-type and assorted look-alikes)".
However, as the program was just what I'd been looking for, I had a crack at modifying the code for my clapped-out MX80. After altering the line feeds, changing the mode to double density bit image and using five bytes instead of three (needing some overlapping of bytes as the last byte of the first colour becomes the last byte of the next), a reasonable simulation was achieved.
Mad Milmps, Durham
.
.
listings. Perhaps this will sort things out.
In Listing 5, the total of the data is 7364. I've no idea where the figure of 7791 came from! The last four items of data are 'dummy' values not used by the code - hence they need not be POKEd (although they should be read if you want to end up with the total of 7364). The data lines were program generated - hence the overrun (which has no effect on the program) - at least that way they're correct! Lines 140 and 145 set up the 'vector' pointers which tell ZIP where to find the code for PLOT and DRAW. They aren't saved but, like most of Listing 5, they alter the library which is saved.
The 'calculation not allowed' error is a tricky one - it turns out that Listing 4 is at fault. For some arcane reason the listing was garbled. In the third column on page 65 you will find the explanation of line 7258, which "calls the MATHS routine twice, to process an X and Y co-ordinate".
Examination of the listing shows that YS child prodigy, Peter Shaw, re-typed the listing with only one call to MATHS, so that the Y co-ordinate is not scanned. Later ZIP finds a number when it is expecting to find a colon or end-of-line marker - the compiler assumes that you're trying to use an 'extra number' after PLOT or DRAW and retorts 'calculation not allowed'. The solution is to add an extra call to MATHS in line 7258, so that it starts ...

7258 GO SUB MATHS: GO SUB GETS: GO SUB MATHS: LET ...

This fetches the X co-ordinate, the separator (a comma) and then the Y co-ordinate. If you've got the rest right, ZIP should then work.
I'm sorry the information got so garbled ... please accept my apologies.
Concerning the ZIP Compiler Offer, I also have to apologise to readers who received their copy late. The delay was caused by a postal dispute in London, which meant that letters took up to three weeks to reach our office.
The dispute has now ended and deliveries are back to normal.
Simon Goodwin, Birmingham
.

MODIFICATION MADNESS

It was with great anticipation
Jetpac loading screen
          START  EQU  32350
                 ORG  START
CD005B           CALL 23296 ;SETUP ROUTINE
1801             JR   BEGIN
                 END
                 ORG  START+6
          ESC    EQU  27
3E1B      BEGIN  LD   A,ESC
CD027F           CALL OUTCH
3E41             LD   A,"A"
CD027F           CALL OUTCH
3E03             LD   A,3
CD027F           CALL OUTCH ;SET UP SMALL LINE FEEDS
0E00             LD   C,0 ;ZERO X COUNTER
3E1B      NLINE  LD   A,ESC
CD027F           CALL OUTCH
3E4C             LD   A,"L"
CD027F           CALL OUTCH
3E70             LD   A,112
CD027F           CALL OUTCH
3E03             LD   A,3
CD027F           CALL OUTCH
          ;PUT IN DOUBLE DENSITY BIT IMAGE MODE
          ;AND SET n1 AND n2 FOR 5 * 176 BITS OF DATA
0600             LD   B,0 ;ZERO Y COUNTER
C5        NXY    PUSH BC
CDAA22           CALL #22AA ;HL=SCREEN MEMORY
47               LD   B,A
04               INC  B
3E01             LD   A,1
0F        L1     RRCA
10FD             DJNZ L1
A6               AND  (HL) ;Z IF INK, NZ IF PAPER
08               EX   AF,AF'
7C               LD   A,H
0F               RRCA
0F               RRCA
0F               RRCA
E603             AND  3
F658             OR   #58
67               LD   H,A ;HL=ATTRIBUTE BYTE
46               LD   B,(HL) ;B=ATTR
08               EX   AF,AF'
78               LD   A,B ;A=ATTR
2003             JR   NZ,INK
0F               RRCA ;IF PAPER THEN /8
0F               RRCA
0F               RRCA
E607      INK    AND  7 ;MASK OTHER BITS

21E17E           LD   HL,TABLE
87               ADD  A,A
87               ADD  A,A
5F               LD   E,A
1600             LD   D,0
19               ADD  HL,DE ;HL=DATA SPECIFIED COLOUR
0605             LD   B,5 ;=NO OF BYTES PER PIXEL
7E        OUTLP  LD   A,(HL) ;READ BYTE
CD027F           CALL OUTCH ;SEND IT
23               INC  HL
10F9             DJNZ OUTLP ;DO 5 BYTES
C1               POP  BC ;RESTORE X & Y
04               INC  B
78               LD   A,B
FEB0             CP   176
38C7             JR   C,NXY ;DO ALL 176 PIXELS
3E0D             LD   A,13 ;END OF LINE SO DO CR
CD027F           CALL OUTCH
3E0A             LD   A,10 ;AND A LINE FEED
CD027F           CALL OUTCH
0C               INC  C
209F             JR   NZ,NLINE ;DO ALL 256 X PIXELS
3E1B             LD   A,ESC ;RESET LINE FEED
CD027F           CALL OUTCH
3E41             LD   A,"A"
CD027F           CALL OUTCH
3E0C             LD   A,12
CD027F           CALL OUTCH
C9               RET
          ;DATA TABLE FOR COLOURS
E0        TABLE  DEFB %11100000
E0               DEFB %11100000
E0               DEFB %11100000
E0               DEFB %11100000
E0               DEFB %11100000
80               DEFB %10000000
E0               DEFB %11100000
20               DEFB %00100000
E0               DEFB %11100000
60               DEFB %01100000
60               DEFB %01100000
20               DEFB %00100000
00               DEFB %00000000
C0               DEFB %11000000
80               DEFB %10000000
C0               DEFB %11000000
00               DEFB %00000000
40               DEFB %01000000
A0               DEFB %10100000
40               DEFB %01000000
00               DEFB %00000000
40               DEFB %01000000
40               DEFB %01000000
00               DEFB %00000000
00               DEFB %00000000
40               DEFB %01000000
00               DEFB %00000000
00               DEFB %00000000
00               DEFB %00000000
00               DEFB %00000000
00               DEFB %00000000
00               DEFB %00000000
00               DEFB %00000000
          ; OUTCH SEND BYTE TO PRINTER
          OUTCH  EQU  $
          ; HILDERBAY OUTPUT
C5               PUSH BC
E5               PUSH HL
CDFE5B           CALL 23550
E1               POP  HL
C1               POP  BC
C9               RET
                 END
both frustrating and unacceptable - especially when one considers how easy it is to transfer from tape to tape using two tape recorders.
Any advice, procedures, software or hardware which will enable non-technical and law abiding users to transfer taped programs to Microdrives are, in my view anyway, much to be encouraged (like Tasman and Campbell). Otherwise one starts to wonder about the purpose of having a Microdrive in the first place.
Ian Ross, Renfrewshire

At least one company (Romantic Robot) are selling software which will allow users to copy commercial programs to Microdrive; it will be interesting to note whether this will cause any programmers to hit the piracy bandwagon. I suspect the reason there is so little software currently on Microdrive is the cost of the cartridges and their duplication - until Sinclair Research reduce the price of the cartridges, Microdrive owners are likely to find themselves discriminated against. I've said it before and I'll say it again ... life isn't a line of cherries. Ed.
 

THOSE FLICKERING VALUES

Regarding the letter from Mike Minchin in the June issue which restates the well-known problem of the 'flickering' of the values returned from the keyboard input ports, here's one solution your readers may like to consider.
To divide a binary number by 32 we would move the point five places to the left - so the returned eight-bit binary number from the input port would then, in fact, consist of the three high bits (including the 'naughty' bit 6) as the integer and the five low values as the fraction. We can then subtract the integer. Multiply by 32 and we've a whole number again which, as it doesn't contain bit 6, doesn't flicker. The unpressed value is, of course, 31 (16+8+4+2+1) but we can then simply add 224 to give the original unpressed value of 255.
The following short program will, I think, prove the theory:

5 REM PRESS KEYS QWERT
10 DEF FN f(x)=(x/32-INT(x/32))*32
20 LET a=FN (IN 64510)+224
30 PRINT AT 0,0; a
40 G0 T0 20


I hope the above ramblings may be of some interest and use to someone. May I take this chance to thank you for publishing the best magazine on the market.
Derek Hirst, Barnsley

You certainly may ... and we thank you for your suggestions. Ed.
 

JET SET LOONY

Seeing your article in issue 4 about Jet Set Willy I felt compelled to write to you about some locations you've missed out. The Gaping Pit seemed the most obvious one, though even I haven't visited it. Secondly, and more importantly, you omitted three major locations; here's how you get to them.
Wait on the bow till 11:45pm (Smith time), which may seem an awful long time to you swashbuckling Spectrummers. At that moment, a raft will get tossed up on a large wave and you must then jump on. It takes you to Crusoe Corner (a desert island to us landlubbers). Then you shin up a palm tree to arrive at Tree Tops - The Sequel, from which you catch the bird that travels up towards In The Clouds. From there you can control yourself all over the house (funny things happen when you try to enter the water or the Master Bedroom) and from that point, it should be possible to find The Gaping Pit (though I've not tried it myself). It also clobbers the 'Attic Attack' and makes it possible to go through baddies (fire puts you down where you are, so be careful) whereupon the bird disintegrates.
Robin Daines, Chester

Hey, he's right ... but if you wait In The Clouds long enough you actually get attacked by a ball of fire coming in from the left that first frazzles Willy, then dumps him inside an ice volcano under Hades, and then - and then - and then - OK, clear off schmuck! Ed
 

DISAPPOINTED DUMPER

In Dumps of Distinction on page 55 of YS, issue 4, you give listings for the Hilderbay, Kempston and Kempston E interfaces. The trouble is I don't have these; could you please tell me what mods have to be done to get the listing to run with my Sinclair ZX Interface 1? By the way, this is the first time I have bought your mag and I like it. Keep up the good work.
NJ Ball, Sidcup

To get Dumps of Distinction working via Interface 1, add the following lines to the listing.

1000 DATA 207, 49, 24, 16, -1
1300 DATA 197, 229, 207, 30, 255, 193, 201, -1


For some reason my particular printer kept crashing in the middle of the dump. So, if you have a similar problem, I can only suggest you try a lower Baud rate. Andy Pennell.
If you're the proud owner of a "clapped-out MX80", try the converted code from Mad Milmps of Durham to get Andy Pennell's Dumps of Distinction working.
 

WHAT THE LORD GIVETH ...

I'm writing to give warm and emphatic support to the letter entitled 'Microdriving' - written by John Ashplant - which appeared on issue 5 of YS.
I too have spent a fortune on software. I too have no intention of making money by copying and selling pirated software; and I too wish to get the best advantage of my own paid-for possessions. I enjoy the facility of being able to run programs from my Microdrive, with all that this offers in the way of speed and compactness, and therefore I feel that the obstacles placed in my way are
Home Contents KwikPik