[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Wizardry 1 on ASIMOV not working or am I missing something?
On Sunday, August 19, 2012 8:49:58 PM UTC-5, Hot Rod wrote:
> On Sunday, August 19, 2012 8:04:41 PM UTC-5, Apple2Games wrote:
>
> > Just went to play Wizardy 1 from the archive on both AppleWin & cAndy Apple on my Droid and the intro page comes up but when I click to continue it clears the screen and the cursor just stays up at the top. Nothing else. Is this just a bum archive or am I just totally missing something here?
>
>
>
> Set it to be read only (write-protected).
>
>
>
> ]HR
An alternative solution is to disable the check for "write protection" in the Wizardry code on the boot diskette. If the code was modified and reloaded to ASIMOV, then the next person to download the image would not fall into this trap of needing to write-protect the boot diskette before booting it.
To disable the check for write protection:
On Track $22, Sector $0B, Address $1E, change $1F to $00.
The code is found in SYSTEM.STARTUP. This is the first code executed in a Pascal "turnkey" system.
The change alters the infinite loop at $501C and $501D as seen in the disassembly below.
For more information about Wizardry and Pascal, see my thread from earlier this year regarding re-engineering Wizardry III, Legacy of Llylgamyn.
Here is the code that does the checking and then displays the copyright screen:
JTAB FOR SUBROUTINE 1:
DATA SIZE: 512
PARAM SIZE: 0
EXIT AT: 5227
ENTER AT: 5000
PROC NUMBER: 1
LEXICAL LEVEL: 1
5000 04 SLDC. PUSH #0004
5001 C6 01 LLA. PUSH #MP.01
5003 00 SLDC. PUSH #0000
5004 C7 00 02 LDCI. PUSH #0200
5007 00 SLDC. PUSH #0000
5008 00 SLDC. PUSH #0000
5009 9E 05 READ FROM VOL#
500B 04 SLDC. PUSH #0004
500C C6 01 LLA. PUSH #MP.01
500E 00 SLDC. PUSH #0000
500F C7 00 02 LDCI. PUSH #0200
5012 00 SLDC. PUSH #0000
5013 00 SLDC. PUSH #0000
5014 9E 06 WRITE VOL#
5016 9E 22 PUSH I/O ERROR STATUS
5018 10 SLDC. PUSH #0010
5019 CB NEQI. PUSH ((TOS-1) <> (TOS))
501A A1 03 UJP. IF NOT (TOS) THEN JUMP TO 501F
501C 00 SLDC. PUSH #0000
501D A1 F6 UJP. IF NOT (TOS) THEN JUMP TO 501C
501F B6 02 03 LOD. PUSH ACTREC(-02).03
5022 0C SLDC. PUSH #000C
5023 00 SLDC. PUSH #0000
5024 CD 00 11 CXP. CALL EXTERNAL PROCEDURE: 11 IN SEGMENT: 00
5027 B6 02 03 LOD. PUSH ACTREC(-02).03
502A D7 NOP. NOP
502B A6 28 43 4F 50 59 52 49 47 48 54 20 28 43 29 31 39 38 31 20 41 4C 4C 20 52 49 47 48 54 53 20 52 45 53 45 52 56 45 44 20 42 59
COPYRIGHT (C)1981 ALL RIGHTS RESERVED BY
LSA. PUSH #(PC+1) POINTER TO THE STRING
--Tommy