;.ref2 ; These instructions are commented out in the original ;LDY #187 ; source, but they would jump to pres in the EQSHP ;JMP pres ; routine with Y = 187, which would show the error: ;Belgium ; "LASER PRESENT" (this code was part of the refund ; bug in the disc version of Elite, which is why it is ; commented out) ; ; There is also a comment in the original source - the ; solitary word "Belgium" ; ; This is presumably a reference to the Hitchhiker's ; Guide to the Galaxy, which says that Belgium is the ; galaxy's most unspeakably rude word, so this no doubt ; reflects the authors' strong feelings on the refund ; bug .refund STA T1 ; Store A in T1 so we can retrieve it later LDA LASER,X ; If there is no laser in view X (i.e. the laser power BEQ ref3 ; is zero), jump to ref3 to skip the refund code ;CMP T1 ; These instructions are commented out in the original ;BEQ ref2 ; source, but they would jump to ref2 above if we were ; trying to replace a laser with one of the same type ; (this code was part of the refund bug in the disc ; version of Elite, which is why it is commented out) LDY #4 ; If the current laser has power #POW (pulse laser), CMP #POW ; jump to ref1 with Y = 4 (the item number of a pulse BEQ ref1 ; laser in the table at PRXS) LDY #5 ; If the current laser has power #POW+128 (beam laser), CMP #POW+128 ; jump to ref1 with Y = 5 (the item number of a beam BEQ ref1 ; laser in the table at PRXS) LDY #12 ; If the current laser has power #Armlas (military CMP #Armlas ; laser), jump to ref1 with Y = 12 (the item number of a BEQ ref1 ; military laser in the table at PRXS) LDY #13 ; Otherwise this is a mining laser, so fall through into ; ref1 with Y = 13 (the item number of a mining laser in ; the table at PRXS) .ref1 ; We now want to refund the laser of type Y that we are ; exchanging for the new laser STX ZZ ; Store the view number in ZZ so we can retrieve it ; later TYA ; Copy the laser type to be refunded from Y to A JSR prx ; Call prx to set (Y X) to the price of equipment item ; number A JSR MCASH ; Call MCASH to add (Y X) to the cash pot LDX ZZ ; Retrieve the view number from ZZ .ref3 ; Finally, we install the new laser LDA T1 ; Retrieve the new laser's power from T1 into A STA LASER,X ; Set the laser view to the new laser's power RTS ; Return from the subroutineName: refund [Show more] Type: Subroutine Category: Equipment Summary: Install a new laser, processing a refund if applicableContext: See this subroutine in context in the source code References: This subroutine is called as follows: * EQSHP calls refund
Arguments: A The power of the new laser to be fitted X The view number for fitting the new laser (0-3)
Returns: A A is preserved X X is preserved
[X]
Configuration variable Armlas = INT(128.5 + 1.5*POW)
Military laser power
[X]
Subroutine MCASH (category: Maths (Arithmetic))
Add an amount of cash to the cash pot
[X]
Configuration variable POW = 15
Pulse laser power
[X]
Subroutine prx (category: Equipment)
Return the price of a piece of equipment
[X]
Label ref1 is local to this routine
[X]
Label ref3 is local to this routine