Discussion:
The Collosal Cave Adventure game for Z80 under CP/M
(too old to reply)
ladislau szilagyi
2023-10-24 15:35:02 UTC
Permalink
Hi,

you may found-it here: https://github.com/Laci1953/RC2014-CPM/tree/main/ADVENTURE

It runs on any Z80 machine under CP/M.

Ladislau
Derek Cooper
2023-10-26 15:42:03 UTC
Permalink
Post by ladislau szilagyi
Hi,
you may found-it here: https://github.com/Laci1953/RC2014-CPM/tree/main/ADVENTURE
It runs on any Z80 machine under CP/M.
Ladislau
Ok thats good,

How do I compile it ?

Derek
ladislau szilagyi
2023-10-26 17:54:25 UTC
Permalink
Hi Derek,

use:

c -v -c -o advent.c
c -v -c -o database.c
c -v -c -o english.c
c -v -c -o itverb.c
c -v -c -o turn.c
c -v -c -o verb.c
z80as rand

then:

xsub
link
-ptext=0,data,bss -c100h -oadvent.com \
crtcpm.obj advent.obj database.obj english.obj itverb.obj \
turn.obj verb.obj rand.obj libc.lib

Or, use the shortcut:

c -v -o advent.c database.c english.c itverb.c turn.c verb.c rand.as

However, if you use the original HiTech C compiler, you will encounter some problems while compiling (assembling)...

First issue: the // comments. This can be fixed immediately by using the old-style /* ... */ comments ...

Second issue: I tried to compile using the original HiTech C (using the modified sources with /* ... */ comments).

Here is what happens:

I>c -v -c -o advent.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ADVENT.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oADVENT.OBJ $CTMP2.$$$
$CTMP2.$$$:4387: Too many temporary labels
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$

Of course, I used my enhanced HiTech C compiler & Z80AS, to avoid all problems... so, I advice you to do the same.

Ladislau
Derek Cooper
2023-10-26 19:15:34 UTC
Permalink
Post by ladislau szilagyi
Hi Derek,
c -v -c -o advent.c
c -v -c -o database.c
c -v -c -o english.c
c -v -c -o itverb.c
c -v -c -o turn.c
c -v -c -o verb.c
z80as rand
xsub
link
-ptext=0,data,bss -c100h -oadvent.com \
crtcpm.obj advent.obj database.obj english.obj itverb.obj \
turn.obj verb.obj rand.obj libc.lib
c -v -o advent.c database.c english.c itverb.c turn.c verb.c rand.as
However, if you use the original HiTech C compiler, you will encounter some problems while compiling (assembling)...
First issue: the // comments. This can be fixed immediately by using the old-style /* ... */ comments ...
Second issue: I tried to compile using the original HiTech C (using the modified sources with /* ... */ comments).
I>c -v -c -o advent.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ADVENT.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oADVENT.OBJ $CTMP2.$$$
$CTMP2.$$$:4387: Too many temporary labels
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
Of course, I used my enhanced HiTech C compiler & Z80AS, to avoid all problems... so, I advice you to do the same.
Ladislau
Next daft question, Where is your version on the C compiler. I found https://github.com/Laci1953/HiTech-C-compiler-enhanced/tree/main
This has directories for the mentioned programs C, CCP etc, No executable in them, do i LOAD the hex files to obtain the COM file?

I found the new CP/M Putsys files, but at some point I see mention of the SCM Rom searching for the Bank switching code from address 7f00 onwards. Do I need a modified ROM?

I can't seen to see a set of "howto" create the New C compiler anywhere, I see the "This is what it does and the principles of how" - just no actual this is what you need to do instructions.

Derek
David Schultz
2023-10-26 22:19:38 UTC
Permalink
Post by ladislau szilagyi
Hi,
you may found-it here: https://github.com/Laci1953/RC2014-CPM/tree/main/ADVENTURE
It runs on any Z80 machine under CP/M.
Ladislau
I have used several versions of the Adventure program. Beginning back
around 1978 on a DEC System 10. It always amazed me the things they
thought of. (For example, try siccing the bird on the dragon.)

Then later a C version but I did finally buy a copy of the CP/M version
to run using an 8080 simulator (com from DDJ) on CP/M-68K. I poked
around on the old hard drive and found these files along with a version
of the manual that I created from scans.

http://davesrocketworks.com/electronics/cpm68/tmp/advent.zip
--
http://davesrocketworks.com
David Schultz
ladislau szilagyi
2023-10-27 03:39:23 UTC
Permalink
Hi Derek,

here are the details:

1. The enhanced HiTech C
------------------------------------------

To implement on your computer the enhanced HiTech C, you need to copy the appropriate .HEX files (according to your hardware), here I will use the "generic" names, then execute:

LOAD CPP
LOAD P1
LOAD CGEN
LOAD OPTIM
LOAD Z80AS
PIP ZAS.COM=Z80AS.COM

2. The smaller CP/M (for 128KB RAM Z80 computers)
--------------------------------

To change your CP/M with the smaller CP/M, to be able to run the enhanced HiTech C for 128KB RAM Z80 computers, select in https://github.com/Laci1953/RC2014-CPM/tree/main/PutSys the appropriate .hex file (according to your RC2014's serial type & CF size), and, under SCM:

load the *_PutSys*.hex
then
*g8000<CR>

Your CP/M is ready and can be booted:
*cpm<CR>

3. The boot ROM
---------------------------
This is a mandatory step only for computers provided with the 512KB ROM + 512KB RAM board.
(For computers provided with Steve Cousins SCM, e.g. SC108, this step is not mandatory, you can boot CP/M from SCM)

Choose the appropriate .hex file (according to your RC2014's serial type & CF size), and burn-it to an (E)EPROM, insert the EPROM to your board.
Now, at power ON, the CP/M directly boots.

All these details are also to be found on GitHub, by the way.
I consider these steps very simple.
I hope you can now try-it.

regards,
Ladislau
ladislau szilagyi
2023-10-27 03:43:48 UTC
Permalink
Hi Derek,

the boot files are here: https://github.com/Laci1953/RC2014-CPM/tree/main/BOOT

Please let me know if you still have problems with the smaller CP/M, booting-it, or with the enhanced HiTech C compiler...

Ladislau
ladislau szilagyi
2023-10-27 04:05:24 UTC
Permalink
Hi Derek,

I just realized that you need a Z80 computer provided with SCM in order to store the smaller CP/M to the appropriate CF ...

The procedure is the following: (let's say you have a SC108, running SCM, and you want to store the smaller CP/M on a 512KB RAM Z80 computer provided with ACIA and 64MB CF)

On the SC108 computer, insert in the CF board the CF to be used on the 512KB RAM machine, boot, paste on the terminal the ACIA_PutSys_CF64_CPM_DA00H.hex file, then:

*g8000<CR>

Now, the CF contains a CP/M to be used on your 512KB RAM computer, you will need to move the CF on that machine.

Seems a little complicated, but it's the only way I know so far...

regards,
Ladislau
ladislau szilagyi
2023-10-27 04:47:00 UTC
Permalink
Hi all,

I added to https://github.com/Laci1953/HiTech-C-compiler-enhanced ,

the file "How to install" ,

containing the following text:

---------------------------

Here are the necessary 3 steps, depending on your specific Z80 computer's hardware:

1. The boot (E)EPROM

This is a mandatory step only for computers provided with the 512KB ROM + 512KB RAM board.
(For computers provided with Steve Cousins SCM, e.g. SC108, this step is not mandatory, you can boot CP/M from SCM, so go to step 2)

For computers provided with 512KB RAM, you need to boot CP/M at power ON, in order to use the enhanced HiTech C compiler.
Running CP/M from ROMWBW will not allow the enhanced HiTech C compiler to be executed !

Choose the appropriate .hex file (according to your RC2014's serial type & CF size), and burn-it to an (E)EPROM, then insert the EPROM to your 512KB RAM + 512KB ROM board.
Example: you have a Z80 computer with an ACIA serial and 64MB CF. You will choose the CPM_boot_512_ACIA_CF64.hex file.
Now, at power ON, the CP/M directly boots.

2. The smaller CP/M (for 128KB RAM Z80 computers)

This step is mandatory only for 128KB RAM computers.
(For computers provided with 512KB RAM + 512KB ROM boards, you may use the "original" CP/M, go to step 3)

To change your CP/M with the smaller CP/M, to be able to run the enhanced HiTech C for 128KB RAM Z80 computers, you need to
paste on the terminal the appropriate .hex file.
Example: you have an 128KB RAM Z80 computer with an ACIA serial and 64MB CF. You will choose the ACIA_PutSys_CF64_CPM_DA00H.hex file.

Then:
*g8000<CR>

Now, the CF contains a smaller CP/M.

3. The enhanced HiTech C

This step is mandatory for all computers.

To implement on your computer the enhanced HiTech C, you need to copy the appropriate .HEX files (according to your hardware), here I will use the "generic" names, then execute:

LOAD CPP
LOAD P1
LOAD CGEN
LOAD OPTIM
LOAD Z80AS
PIP ZAS.COM=Z80AS.COM

Now, you have the enhanced HiTech C installed.
----------------------------

Many thanks Derek for pointing out the need to have a clear "install instruction" text for the enhanced HiTech C compiler !!!

regards,
Ladislau
Derek Cooper
2023-10-27 11:05:12 UTC
Permalink
Post by ladislau szilagyi
Hi all,
I added to https://github.com/Laci1953/HiTech-C-compiler-enhanced ,
the file "How to install" ,
---------------------------
1. The boot (E)EPROM
This is a mandatory step only for computers provided with the 512KB ROM + 512KB RAM board.
(For computers provided with Steve Cousins SCM, e.g. SC108, this step is not mandatory, you can boot CP/M from SCM, so go to step 2)
For computers provided with 512KB RAM, you need to boot CP/M at power ON, in order to use the enhanced HiTech C compiler.
Running CP/M from ROMWBW will not allow the enhanced HiTech C compiler to be executed !
Choose the appropriate .hex file (according to your RC2014's serial type & CF size), and burn-it to an (E)EPROM, then insert the EPROM to your 512KB RAM + 512KB ROM board.
Example: you have a Z80 computer with an ACIA serial and 64MB CF. You will choose the CPM_boot_512_ACIA_CF64.hex file.
Now, at power ON, the CP/M directly boots.
2. The smaller CP/M (for 128KB RAM Z80 computers)
This step is mandatory only for 128KB RAM computers.
(For computers provided with 512KB RAM + 512KB ROM boards, you may use the "original" CP/M, go to step 3)
To change your CP/M with the smaller CP/M, to be able to run the enhanced HiTech C for 128KB RAM Z80 computers, you need to
paste on the terminal the appropriate .hex file.
Example: you have an 128KB RAM Z80 computer with an ACIA serial and 64MB CF. You will choose the ACIA_PutSys_CF64_CPM_DA00H.hex file.
*g8000<CR>
Now, the CF contains a smaller CP/M.
3. The enhanced HiTech C
This step is mandatory for all computers.
LOAD CPP
LOAD P1
LOAD CGEN
LOAD OPTIM
LOAD Z80AS
PIP ZAS.COM=Z80AS.COM
Now, you have the enhanced HiTech C installed.
----------------------------
Many thanks Derek for pointing out the need to have a clear "install instruction" text for the enhanced HiTech C compiler !!!
regards,
Ladislau
Hi,
I have installed the correct version of CP/M on an SC114. It boots into cpm 2.2 ok.

I downloaded the 128k versions of cpp p1 cgen optim z80as (cgen only had one version, no 512/128 option).
I ran the LOAD util with each file to get the new versions of the files.

I downloaded the adventure game and tried:

G>c -v -c -o advent.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ADVENT.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$

But it never gets past p1 ?

This is my directory (with the adventure files and updated hitech files) Do they look about the same size as your files?

G>a:stat *.*

Recs Bytes Ext Acc
5 4k 1 R/W G:$$EXEC.$$$
220 28k 1 R/W G:$CTMP1.$$$
9 4k 1 R/W G:$EXEC.COM
62 8k 1 R/W G:ADVCAVE.H
16 4k 1 R/W G:ADVDEC.H
12 4k 1 R/W G:ADVDEF.H
484 64k 2 R/W G:ADVENT.ARC
69 12k 1 R/W G:ADVENT.C
19 4k 1 R/W G:ADVENT.H
27 4k 1 R/W G:ADVENT0.C
139 20k 1 R/W G:ADVENT1.TXT
49 8k 1 R/W G:ADVENT2.TXT
42 8k 1 R/W G:ADVENT3.TXT
139 20k 1 R/W G:ADVENT4.TXT
37 8k 1 R/W G:ADVTEXT.H
38 8k 1 R/W G:ADVWORD.H
4 4k 1 R/W G:ASSERT.H
152 20k 1 R/W G:C.COM
369 48k 2 R/W G:CGEN.COM
154 20k 1 R/W G:CNEW.COM
5 4k 1 R/W G:CONIO.H
28 4k 1 R/W G:CPM.H
223 28k 1 R/W G:CPP.COM
132 20k 1 R/W G:CREF.COM
3 4k 1 R/W G:CRTCPM.OBJ
7 4k 1 R/W G:CTYPE.H
50 8k 1 R/W G:DATABASE.C
106 16k 1 R/W G:DEBUG.COM
94 12k 1 R/W G:DEHUFF.COM
24 4k 1 R/W G:ENGLISH.C
3 4k 1 R/W G:EXEC.H
17 4k 1 R/W G:FLOAT.H
1535 192k 6 R/W G:HITECH.ARC
16 4k 1 R/W G:HITECH.H
31 4k 1 R/W G:ITVERB.C
477 60k 2 R/W G:LIBC.LIB
199 28k 1 R/W G:LIBF.LIB
141 20k 1 R/W G:LIBR.COM
6 4k 1 R/W G:LIMITS.H
235 32k 1 R/W G:LINK.COM
4 4k 1 R/W G:MATH.H
191 24k 1 R/W G:OBJTOHEX.COM
272 36k 2 R/W G:OPTIM.COM
6 4k 1 R/W G:OPTIONS
340 44k 2 R/W G:P1.COM
0 0k 1 R/W G:QUIT.COM
7 4k 1 R/W G:RAND.AS
7 4k 1 R/W G:READ.ME
11 4k 1 R/W G:README.TXT
6 4k 1 R/W G:RRTCPM.OBJ
2 4k 1 R/W G:SETJMP.H
9 4k 1 R/W G:SIGNAL.H
6 4k 1 R/W G:STAT.H
2 4k 1 R/W G:STDARG.H
3 4k 1 R/W G:STDDEF.H
20 4k 1 R/W G:STDIO.H
8 4k 1 R/W G:STDLIB.H
10 4k 1 R/W G:STRING.H
8 4k 1 R/W G:SYS.H
7 4k 1 R/W G:TIME.H
117 16k 1 R/W G:TURN.C
6 4k 1 R/W G:UNIXIO.H
96 12k 1 R/W G:VERB.C
202 28k 1 R/W G:ZAS.COM
Bytes Remaining On G: 7192k
ladislau szilagyi
2023-10-27 12:11:00 UTC
Permalink
Hi Derek,

let's check, step by step...

First, your CP/M. (I suppose that's the problem...)
zsid
ZSID VERS 1.4
#lf000
F000 JP F0E0
F003 JP F163
F006 JP F1CB
F009 JP F1F9
F00C JP F22E
F00F JP F216
F012 JP F222
F015 JP F1EE
F018 JP F27D
F01B JP F255
F01E JP F289
#lff4e
FF4E LD A,01
FF50 OUT 38,A
FF52 POP AF
FF53 CP 01
FF55 JR Z,04
FF57 LD A,01
FF59 JR 02
FF5B LD A,00
FF5D LD (0003),A
FF60 JP F000
FF63 NOP
#

Is this what you see on your computer?

Ladislau
Derek Cooper
2023-10-27 12:39:33 UTC
Permalink
Post by ladislau szilagyi
Hi Derek,
let's check, step by step...
First, your CP/M. (I suppose that's the problem...)
zsid
ZSID VERS 1.4
#lf000
F000 JP F0E0
F003 JP F163
F006 JP F1CB
F009 JP F1F9
F00C JP F22E
F00F JP F216
F012 JP F222
F015 JP F1EE
F018 JP F27D
F01B JP F255
F01E JP F289
#lff4e
FF4E LD A,01
FF50 OUT 38,A
FF52 POP AF
FF53 CP 01
FF55 JR Z,04
FF57 LD A,01
FF59 JR 02
FF5B LD A,00
FF5D LD (0003),A
FF60 JP F000
FF63 NOP
#
Is this what you see on your computer?
Ladislau
Not what I get, this is mine, i used SCM to upload the file ACIA_PutSys_CF64_CPM_DA00H.hex

*cpm
RC2014 CP/M BIOS 1.2 by G. Searle 2007-18

CP/M 2.2 Copyright 1979 (c) by Digital Research

A>zsid
ZSID VERS 1.4
#lf000
F000 JP F0E0
F003 JP F163
F006 JP F1CB
F009 JP F1F3
F00C JP F222
F00F JP F20A
F012 JP F216
F015 JP F1E8
F018 JP F268
F01B JP F240
F01E JP F274
#lff4e
FF4E NOP
FF4F NOP
FF50 NOP
FF51 NOP
FF52 NOP
FF53 NOP
FF54 NOP
FF55 NOP
FF56 NOP
FF57 NOP
FF58 NOP
ladislau szilagyi
2023-10-27 13:15:54 UTC
Permalink
Oh, I did not know you have ACIA...

The CP/M seems OK !

Let's dig deeper...

Try this:

BOOT
Small Computer Monitor - S3
*d69
0069: C3 57 01 .W. JP $0157
006C: C3 0B 04 ... JP $040B
006F: C3 25 03 .%. JP $0325
0072: C3 3B 03 .;. JP $033B
0075: C3 54 01 .T. JP $0154
0078: C3 16 0E ... JP $0E16
007B: C3 FD 04 ... JP $04FD
007E: C3 55 01 .U. JP $0155
0081: C3 54 01 .T. JP $0154
0084: C3 54 01 .T. JP $0154
0087: C3 54 01 .T. JP $0154
008A: C3 54 01 .T. JP $0154
008D: C3 54 01 .T. JP $0154
0090: C3 54 01 .T. JP $0154
0093: C3 54 01 .T. JP $0154
0096: C3 54 01 .T. JP $0154
0099: C3 59 01 .Y. JP $0159
009C: C3 59 01 .Y. JP $0159
009F: C3 59 01 .Y. JP $0159
00A2: C3 59 01 .Y. JP $0159
*d4fd
04FD: 21 0F 05 !.. LD HL,$050F
0500: 47 G LD B,A
0501: 79 y LD A,C
0502: FE 2C ., CP $2C
0504: D0 . RET NC
0505: 78 x LD A,B
0506: 06 00 .. LD B,$00
0508: 09 . ADD HL,BC
0509: 09 . ADD HL,BC
050A: 46 F LD B,(HL)
050B: 23 # INC HL
050C: 66 f LD H,(HL)
050D: 68 h LD L,B
050E: E9 . JP (HL)
050F: 6C l LD L,H
0510: 02 . LD (BC),A
0511: 25 % DEC H
0512: 03 . INC BC
0513: 0B . DEC BC
0514: 04 . INC B
*

The 7'th JP from 69H is in my case JP $04FD.
At 04FD, the code MUST contain:

LD HL,xxxx
LD B,A
LD A,C
CP $2C ;HERE, STEVE CHECKS FOR THE MAX FUNCTION # - in my case $2C

(this means, my SCM version contains the functions $2A and $2B, to move bytes from/to the high 64KB RAM bank.)

Check, on your computer, the code at $7B (the 7'th JP). It's a JP to some address. Check that address (d addr).
I suppose you will find , on your computer:

LD HL,xxxx
LD B,A
LD A,C
CP $2A ;HERE, STEVE CHECKS FOR THE MAX FUNCTION # - in your case $2A

I suppose you have an older version of SCM (without the functions $2A and $2B).

In this case, we must use another solution...

but first, I wait for your response...

Ladislau
Derek Cooper
2023-10-27 13:43:16 UTC
Permalink
Post by ladislau szilagyi
Oh, I did not know you have ACIA...
The CP/M seems OK !
Let's dig deeper...
BOOT
Small Computer Monitor - S3
*d69
0069: C3 57 01 .W. JP $0157
006C: C3 0B 04 ... JP $040B
006F: C3 25 03 .%. JP $0325
0072: C3 3B 03 .;. JP $033B
0075: C3 54 01 .T. JP $0154
0078: C3 16 0E ... JP $0E16
007B: C3 FD 04 ... JP $04FD
007E: C3 55 01 .U. JP $0155
0081: C3 54 01 .T. JP $0154
0084: C3 54 01 .T. JP $0154
0087: C3 54 01 .T. JP $0154
008A: C3 54 01 .T. JP $0154
008D: C3 54 01 .T. JP $0154
0090: C3 54 01 .T. JP $0154
0093: C3 54 01 .T. JP $0154
0096: C3 54 01 .T. JP $0154
0099: C3 59 01 .Y. JP $0159
009C: C3 59 01 .Y. JP $0159
009F: C3 59 01 .Y. JP $0159
00A2: C3 59 01 .Y. JP $0159
*d4fd
04FD: 21 0F 05 !.. LD HL,$050F
0500: 47 G LD B,A
0501: 79 y LD A,C
0502: FE 2C ., CP $2C
0504: D0 . RET NC
0505: 78 x LD A,B
0506: 06 00 .. LD B,$00
0508: 09 . ADD HL,BC
0509: 09 . ADD HL,BC
050A: 46 F LD B,(HL)
050B: 23 # INC HL
050C: 66 f LD H,(HL)
050D: 68 h LD L,B
050E: E9 . JP (HL)
050F: 6C l LD L,H
0510: 02 . LD (BC),A
0511: 25 % DEC H
0512: 03 . INC BC
0513: 0B . DEC BC
0514: 04 . INC B
*
The 7'th JP from 69H is in my case JP $04FD.
LD HL,xxxx
LD B,A
LD A,C
CP $2C ;HERE, STEVE CHECKS FOR THE MAX FUNCTION # - in my case $2C
(this means, my SCM version contains the functions $2A and $2B, to move bytes from/to the high 64KB RAM bank.)
Check, on your computer, the code at $7B (the 7'th JP). It's a JP to some address. Check that address (d addr).
LD HL,xxxx
LD B,A
LD A,C
CP $2A ;HERE, STEVE CHECKS FOR THE MAX FUNCTION # - in your case $2A
I suppose you have an older version of SCM (without the functions $2A and $2B).
In this case, we must use another solution...
but first, I wait for your response...
Ladislau
My version is:

Small Computer Monitor by Stephen C Cousins (www.scc.me.uk)
Configuration S2 20220227, Monitor 1.3.0, SCZ80 BIOS 1.3.0

I think this looks ok
my CP instruction checks for $2c :
051E: FE 2C ., CP $2C

the listings:
*d69
0069: C3 23 01 .#. JP $0123
006C: C3 23 04 .#. JP $0423
006F: C3 48 03 .H. JP $0348
0072: C3 5E 03 .^. JP $035E
0075: C3 1F 01 ... JP $011F
0078: C3 00 00 ... JP $0000
007B: C3 19 05 ... JP $0519
007E: C3 21 01 .!. JP $0121
0081: C3 1F 01 ... JP $011F
0084: C3 1F 01 ... JP $011F
0087: C3 1F 01 ... JP $011F
008A: C3 1F 01 ... JP $011F
008D: C3 1F 01 ... JP $011F
0090: C3 1F 01 ... JP $011F
0093: C3 1F 01 ... JP $011F
0096: C3 1F 01 ... JP $011F
0099: C3 25 01 .%. JP $0125
009C: C3 25 01 .%. JP $0125
009F: C3 25 01 .%. JP $0125
00A2: C3 25 01 .%. JP $0125
*d0519
0519: 21 2B 05 !+. LD HL,$052B
051C: 47 G LD B,A
051D: 79 y LD A,C
051E: FE 2C ., CP $2C
0520: D0 . RET NC
0521: 78 x LD A,B
0522: 06 00 .. LD B,$00
0524: 09 . ADD HL,BC
0525: 09 . ADD HL,BC
0526: 46 F LD B,(HL)
0527: 23 # INC HL
0528: 66 f LD H,(HL)
0529: 68 h LD L,B
052A: E9 . JP (HL)
052B: 78 x LD A,B
052C: 02 . LD (BC),A
052D: 48 H LD C,B
052E: 03 . INC BC
052F: 23 # INC HL
0530: 04 . INC B
*
ladislau szilagyi
2023-10-27 13:58:26 UTC
Permalink
ok, lets check the code of functions $2A and $2B ...

on my computer:

007B: C3 FD 04 ... JP $04FD

04FD: 21 0F 05 !.. LD HL,$050F

50F + 2A + 2A = 563

*m563
0563: 8C 1D 98 1D ... (2 words = addresses of byte move routines)

*d1D8C
1D8C: 0E 38 .8 LD C,$38
1D8E: 06 80 .. LD B,$80
1D90: ED 41 .A OUT (C),B
1D92: 1A . LD A,(DE)
1D93: 06 00 .. LD B,$00
1D95: ED 41 .A OUT (C),B
1D97: C9 . RET
1D98: 0E 38 .8 LD C,$38
1D9A: 06 80 .. LD B,$80
1D9C: ED 41 .A OUT (C),B
1D9E: 12 . LD (DE),A
1D9F: 06 00 .. LD B,$00
1DA1: ED 41 .A OUT (C),B
1DA3: C9 . RET

Is this code also on your computer?

Ladislau
ladislau szilagyi
2023-10-27 14:07:50 UTC
Permalink
Hi Derek,
please download again the optim128.hex... I updated it 10 minutes ago

the sizes should be:

CGEN COM 48k 369
CPP COM 28k 223
P1 COM 44k 340
OPTIM COM 36k 258

Ladislau
Derek Cooper
2023-10-27 14:11:45 UTC
Permalink
Post by ladislau szilagyi
ok, lets check the code of functions $2A and $2B ...
007B: C3 FD 04 ... JP $04FD
04FD: 21 0F 05 !.. LD HL,$050F
50F + 2A + 2A = 563
*m563
0563: 8C 1D 98 1D ... (2 words = addresses of byte move routines)
*d1D8C
1D8C: 0E 38 .8 LD C,$38
1D8E: 06 80 .. LD B,$80
1D90: ED 41 .A OUT (C),B
1D92: 1A . LD A,(DE)
1D93: 06 00 .. LD B,$00
1D95: ED 41 .A OUT (C),B
1D97: C9 . RET
1D98: 0E 38 .8 LD C,$38
1D9A: 06 80 .. LD B,$80
1D9C: ED 41 .A OUT (C),B
1D9E: 12 . LD (DE),A
1D9F: 06 00 .. LD B,$00
1DA1: ED 41 .A OUT (C),B
1DA3: C9 . RET
Is this code also on your computer?
Ladislau
My version has an extra jump:
so from the top:
0519: 21 2B 05 !+. LD HL,$052B
52b+2a+2a = 57f

*m57f
057F: E0 1C E3 1C C9 21 A1 05 79 FE 03 30 09 06 00 09 .....!..y..0....
058F: 09 46 23 66 68 E9 AF 47 67 6F C9 C3 48 03 7B C3 .F#fh..Ggo..H.{.

*d1ce0 THIS SHOWS an extra JP to the code
1CE0: C3 91 1F ... JP $1F91
1CE3: C3 9C 1F ... JP $1F9C

1F91: 0E 30 .0 LD C,$30
1F93: 06 01 .. LD B,$01
1F95: ED 41 .A OUT (C),B
1F97: 1A . LD A,(DE)
1F98: 05 . DEC B
1F99: ED 41 .A OUT (C),B
1F9B: C9 . RET

It looks like it does something similar

Derek
ladislau szilagyi
2023-10-27 14:23:18 UTC
Permalink
Hi Derek,

the mystery is solved!!!

turns out that your SC114 has other ports used to select the ROM/RAM banks, compared to SC108:

SC108:

MEMP_PORT equ 38H

; ROM 0000 to 8000H
;
ROM_OUT_CMD equ 00000001B
ROM_IN_CMD equ 00000000B
LOWER_64RAM equ 00000000B
UPPER_64RAM equ 10000000B

1D8C: 0E 38 .8 LD C,$38
1D8E: 06 80 .. LD B,$80
1D90: ED 41 .A OUT (C),B
1D92: 1A . LD A,(DE)
1D93: 06 00 .. LD B,$00
1D95: ED 41 .A OUT (C),B
1D97: C9 . RET

SC114:

1F91: 0E 30 .0 LD C,$30
1F93: 06 01 .. LD B,$01
1F95: ED 41 .A OUT (C),B
1F97: 1A . LD A,(DE)
1F98: 05 . DEC B
1F99: ED 41 .A OUT (C),B
1F9B: C9 . RET

Can you please list also the $1F9C routine?

I will modify the source files, with a new option : SC114 !!! I was convinced that is similar to SC108... but IT'S NOT !!!

Ladislau
Derek Cooper
2023-10-27 14:26:43 UTC
Permalink
Post by ladislau szilagyi
Hi Derek,
the mystery is solved!!!
MEMP_PORT equ 38H
; ROM 0000 to 8000H
;
ROM_OUT_CMD equ 00000001B
ROM_IN_CMD equ 00000000B
LOWER_64RAM equ 00000000B
UPPER_64RAM equ 10000000B
1D8C: 0E 38 .8 LD C,$38
1D8E: 06 80 .. LD B,$80
1D90: ED 41 .A OUT (C),B
1D92: 1A . LD A,(DE)
1D93: 06 00 .. LD B,$00
1D95: ED 41 .A OUT (C),B
1D97: C9 . RET
1F91: 0E 30 .0 LD C,$30
1F93: 06 01 .. LD B,$01
1F95: ED 41 .A OUT (C),B
1F97: 1A . LD A,(DE)
1F98: 05 . DEC B
1F99: ED 41 .A OUT (C),B
1F9B: C9 . RET
Can you please list also the $1F9C routine?
I will modify the source files, with a new option : SC114 !!! I was convinced that is similar to SC108... but IT'S NOT !!!
Ladislau
the $1f9c code is:*d1f9c
1F9C: 0E 30 .0 LD C,$30
1F9E: 06 01 .. LD B,$01
1FA0: ED 41 .A OUT (C),B
1FA2: 12 . LD (DE),A
1FA3: 05 . DEC B
1FA4: ED 41 .A OUT (C),B
1FA6: C9 . RET
1FA7: ED B0 .. LDIR
1FA9: C9 . RET

Derek
Derek Cooper
2023-10-27 14:24:21 UTC
Permalink
Post by ladislau szilagyi
ok, lets check the code of functions $2A and $2B ...
007B: C3 FD 04 ... JP $04FD
04FD: 21 0F 05 !.. LD HL,$050F
50F + 2A + 2A = 563
*m563
0563: 8C 1D 98 1D ... (2 words = addresses of byte move routines)
*d1D8C
1D8C: 0E 38 .8 LD C,$38
1D8E: 06 80 .. LD B,$80
1D90: ED 41 .A OUT (C),B
1D92: 1A . LD A,(DE)
1D93: 06 00 .. LD B,$00
1D95: ED 41 .A OUT (C),B
1D97: C9 . RET
1D98: 0E 38 .8 LD C,$38
1D9A: 06 80 .. LD B,$80
1D9C: ED 41 .A OUT (C),B
1D9E: 12 . LD (DE),A
1D9F: 06 00 .. LD B,$00
1DA1: ED 41 .A OUT (C),B
1DA3: C9 . RET
Is this code also on your computer?
Ladislau
0519: 21 2B 05 !+. LD HL,$052B
52b+2a+2a = 57f
*m57f
057F: E0 1C E3 1C C9 21 A1 05 79 FE 03 30 09 06 00 09 .....!..y..0....
058F: 09 46 23 66 68 E9 AF 47 67 6F C9 C3 48 03 7B C3 .F#fh..Ggo..H.{.
*d1ce0 THIS SHOWS an extra JP to the code
1CE0: C3 91 1F ... JP $1F91
1CE3: C3 9C 1F ... JP $1F9C
1F91: 0E 30 .0 LD C,$30
1F93: 06 01 .. LD B,$01
1F95: ED 41 .A OUT (C),B
1F97: 1A . LD A,(DE)
1F98: 05 . DEC B
1F99: ED 41 .A OUT (C),B
1F9B: C9 . RET
It looks like it does something similar
Derek
I checked the sizes after downloading and LOADing again.
369 48k 2 R/W G:CGEN.COM
223 28k 1 R/W G:CPP.COM
258 36k 2 R/W G:OPTIM.COM
340 44k 2 R/W G:P1.COM

They look ok to me. It was the P1.COM file that failed not optim.com

if i run just optim.com it responds with nothing or if i give it a filename (not a real one) it responds not found.
if i run p1.com the system locks until reset
ladislau szilagyi
2023-10-27 14:27:15 UTC
Permalink
Hi Derek,

I must rebuild P1, CGEN & OPTIM, for SC114.

Can you please list also the $1F9C routine?

Ladislau
ladislau szilagyi
2023-10-27 14:32:04 UTC
Permalink
Thanks Derek,

now, back to the source code...

I will notify you after finishing the modifications needed for SC114... it will take some time :(

Ladislau
Derek Cooper
2023-10-27 14:37:33 UTC
Permalink
Post by ladislau szilagyi
Thanks Derek,
now, back to the source code...
I will notify you after finishing the modifications needed for SC114... it will take some time :(
Ladislau
ok thanks,

When your ready I will test it foe you - no problem. And no rush.

Derek
ladislau szilagyi
2023-10-27 19:17:11 UTC
Permalink
Hi Derek,

I published the versions for SC114 on GitHub.

You need to copy only P1_114.HEX , CGEN114.HEX , OPTIM114.HEX , then LOAD them.

I tested the executables on a configuration using the Phillip Stevens 32KB ROM + 128KB RAM memory module, which is compatible with SC114, they work OK.

When compiling the game, you will get some warnings, it's OK...

regards,
Ladislau
Derek Cooper
2023-10-27 20:19:56 UTC
Permalink
Post by ladislau szilagyi
Hi Derek,
I published the versions for SC114 on GitHub.
You need to copy only P1_114.HEX , CGEN114.HEX , OPTIM114.HEX , then LOAD them.
I tested the executables on a configuration using the Phillip Stevens 32KB ROM + 128KB RAM memory module, which is compatible with SC114, they work OK.
When compiling the game, you will get some warnings, it's OK...
regards,
Ladislau
Thanks,
I give them a go tomorrow, about to out.

Derek
Zbig
2023-10-27 22:03:02 UTC
Permalink
Compilation of the game seems to be quite an adventure…
ladislau szilagyi
2023-10-28 03:42:10 UTC
Permalink
Post by Zbig
Compilation of the game seems to be quite an adventure…
@Zbig: well, it might seem an adventure, but this whole "adventure" was caused because:

- the "original" HiTech C fails compiling the game files
- I neglected to include, for my enhanced HiTech C, a decent "install procedure instructions" text file (fixed !)
- the appropriate HiTech executables for Derek's hardware (SC114) were missing from my GitHub page (fixed !)

But, at the end, this only confirms the fact that an installation kit of a software product must cover all hardware variants and also contain a user guide.

thanks,
Ladislau
ladislau szilagyi
2023-10-28 10:25:31 UTC
Permalink
The expected output from the build procedure:

(this was executed on Z80ALL, on RC2014(SC108) it takes about 20 minutes...)
---------------
c>submit buildadv

c>clock reset

c>c -v -c -o advent.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ADVENT.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
ADVENT.C: main()
59: else if (yes(65, 1, 0))
Warning #88 yes ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oADVENT.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8

Errors: 0

Jump optimizations done: 38
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$

c>c -v -c -o database.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I DATABASE.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oDATABASE.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8

Errors: 0

Jump optimizations done: 47
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$

c>c -v -c -o english.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ENGLISH.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oENGLISH.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8

Errors: 0

Jump optimizations done: 36
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$

c>c -v -c -o itverb.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ITVERB.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
ITVERB.C: ivtake()
104: if(anobj==0|| (dcheck() && dflag>=2)) {
Warning #88 dcheck ^ (warning)
ITVERB.C: ivopen()
117: if(here(14))
Warning #88 here ^ (warning)
121: if(at(9))
Warning #88 at ^ (warning)
ITVERB.C: ivdrink()
192: if(liqloc(loc) != 21 &&
Warning #88 liqloc ^ (warning)
193: (liq()!= 21 || !here(20)))
Warning #88 liq ^ (warning)
ITVERB.C: ivquit()
206: if(gaveup=yes(22,54,54))
Warning #88 yes ^ (warning)
ITVERB.C: ivfoo()
229: k = vocab(word1,3000);
Warning #88 vocab ^ (warning)
242: (toting(56) && loc == 92)) {
Warning #88 toting ^ (warning)
ITVERB.C: ivread()
271: if (object > 100 || object == 0 || dark()) {
Warning #88 dark ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oITVERB.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8

Errors: 0

Jump optimizations done: 61
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$

c>c -v -c -o turn.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I TURN.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
TURN.C: turn()
36: if (newloc != loc && !forced(loc) && cond[loc]&8 == 0)
Warning #88 forced ^ (warning)
67: if (wzdark && dark() && pct(35)) {
Warning #88 dark ^ (warning)
Warning #88 pct ^ (warning)
84: if (prop[15] < 0 && toting (15))
Warning #88 toting ^ (warning)
95: if (stimer())
Warning #88 stimer ^ (warning)
98: while (!english())
Warning #88 english ^ (warning)
TURN.C: descitem()
137: if (at(i)) {
Warning #88 at ^ (warning)
TURN.C: death()
469: yea = yes(81+numdie*2, 82+numdie*2, 54);
Warning #88 yes ^ (warning)
491: }
^ unused variable definition: k (warning)
TURN.C: doobj()
503: if (fixed[object] == loc || here(object))
Warning #88 here ^ (warning)
521: else if (dcheck() && dflag >= 2) {
Warning #88 dcheck ^ (warning)
528: else if ((liq() == object && here(20)) ||
Warning #88 liq ^ (warning)
529: liqloc(loc) == object)
Warning #88 liqloc ^ (warning)
558: }
^ unused variable definition: i (warning)
TURN.C: stimer()
793: prop[20] = put(20, 115, 1);
Warning #88 put ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
TURN.C:36: constant relational expression
TURN.C:643: constant relational expression
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oTURN.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8

Errors: 0

Jump optimizations done: 212
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$

c>c -v -c -o verb.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I VERB.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
VERB.C: vtake()
111: if (toting(object)) {
Warning #88 toting ^ (warning)
133: if (!here(20) || liq() != object) {
Warning #88 here ^ (warning)
Warning #88 liq ^ (warning)
VERB.C: vdrop()
217: else if (object == 8 && at(31) && prop[31] == 0){
Warning #88 at ^ (warning)
VERB.C: vkill()
460: if (!yes(49,0,0))
Warning #88 yes ^ (warning)
VERB.C: vthrow()
607: if (i = dcheck()) {
Warning #88 dcheck ^ (warning)
609: if (pct(33)) {
Warning #88 pct ^ (warning)
VERB.C: vfind()
669: object == liqloc(loc))
Warning #88 liqloc ^ (warning)
VERB.C: vread()
786: if (dark()) {
Warning #88 dark ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oVERB.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8

Errors: 0

Jump optimizations done: 234
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$

c>z80as rand.as
Z80AS Macro-Assembler V4.8

Errors: 0
Finished.

c>xsub

c>link
link> -ptext=0,data,bss -c100h -oadvent.com \

link> crtcpm.obj advent.obj database.obj english.obj itverb.obj \

link> turn.obj verb.obj rand.obj libc.lib


(xsub active)
c>clock
00:05:42 since the last clock call...
(xsub active)
c>advent


Welcome to ADVENTURE!
=====================
-Original development by Willie Crowther.
-Major features added by Don Woods.
-Conversion to BDS C by J. R. Jaeger
-Unix standardization by Jerry D. Pohl.
-OS/2 Conversion by Martin Heller
-Conversion to TurboC 2.0 by Daimler

Would you like instructions?
Somewhere nearby is Colossal Cave, where others have
found fortunes in treasure and gold, though it is rumored
that some who enter are never seen again. Magic is said
to work in the cave. I will be your eyes and hands. Direct
me with commands of 1 or 2 words. I should warn you that I
look at only the first five letters of each word, so you'll
have to enter "Northeast" as "ne" to distinguish it from
"North". (Should you get stuck, type "help" for some
general hints).

You are inside a building, a well house for a large spring.
There are some keys on the ground here.
There is a shiny brass lamp nearby.
There is tasty food here.
There is a bottle of water here.
^C
c>
-------------------

Ladislau
Derek Cooper
2023-10-28 11:07:43 UTC
Permalink
Post by ladislau szilagyi
(this was executed on Z80ALL, on RC2014(SC108) it takes about 20 minutes...)
---------------
c>submit buildadv
c>clock reset
c>c -v -c -o advent.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ADVENT.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
ADVENT.C: main()
59: else if (yes(65, 1, 0))
Warning #88 yes ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oADVENT.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 38
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>c -v -c -o database.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I DATABASE.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oDATABASE.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 47
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>c -v -c -o english.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ENGLISH.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oENGLISH.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 36
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>c -v -c -o itverb.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ITVERB.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
ITVERB.C: ivtake()
104: if(anobj==0|| (dcheck() && dflag>=2)) {
Warning #88 dcheck ^ (warning)
ITVERB.C: ivopen()
117: if(here(14))
Warning #88 here ^ (warning)
121: if(at(9))
Warning #88 at ^ (warning)
ITVERB.C: ivdrink()
192: if(liqloc(loc) != 21 &&
Warning #88 liqloc ^ (warning)
193: (liq()!= 21 || !here(20)))
Warning #88 liq ^ (warning)
ITVERB.C: ivquit()
206: if(gaveup=yes(22,54,54))
Warning #88 yes ^ (warning)
ITVERB.C: ivfoo()
229: k = vocab(word1,3000);
Warning #88 vocab ^ (warning)
242: (toting(56) && loc == 92)) {
Warning #88 toting ^ (warning)
ITVERB.C: ivread()
271: if (object > 100 || object == 0 || dark()) {
Warning #88 dark ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oITVERB.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 61
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>c -v -c -o turn.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I TURN.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
TURN.C: turn()
36: if (newloc != loc && !forced(loc) && cond[loc]&8 == 0)
Warning #88 forced ^ (warning)
67: if (wzdark && dark() && pct(35)) {
Warning #88 dark ^ (warning)
Warning #88 pct ^ (warning)
84: if (prop[15] < 0 && toting (15))
Warning #88 toting ^ (warning)
95: if (stimer())
Warning #88 stimer ^ (warning)
98: while (!english())
Warning #88 english ^ (warning)
TURN.C: descitem()
137: if (at(i)) {
Warning #88 at ^ (warning)
TURN.C: death()
469: yea = yes(81+numdie*2, 82+numdie*2, 54);
Warning #88 yes ^ (warning)
491: }
^ unused variable definition: k (warning)
TURN.C: doobj()
503: if (fixed[object] == loc || here(object))
Warning #88 here ^ (warning)
521: else if (dcheck() && dflag >= 2) {
Warning #88 dcheck ^ (warning)
528: else if ((liq() == object && here(20)) ||
Warning #88 liq ^ (warning)
529: liqloc(loc) == object)
Warning #88 liqloc ^ (warning)
558: }
^ unused variable definition: i (warning)
TURN.C: stimer()
793: prop[20] = put(20, 115, 1);
Warning #88 put ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
TURN.C:36: constant relational expression
TURN.C:643: constant relational expression
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oTURN.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 212
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>c -v -c -o verb.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I VERB.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
VERB.C: vtake()
111: if (toting(object)) {
Warning #88 toting ^ (warning)
133: if (!here(20) || liq() != object) {
Warning #88 here ^ (warning)
Warning #88 liq ^ (warning)
VERB.C: vdrop()
217: else if (object == 8 && at(31) && prop[31] == 0){
Warning #88 at ^ (warning)
VERB.C: vkill()
460: if (!yes(49,0,0))
Warning #88 yes ^ (warning)
VERB.C: vthrow()
607: if (i = dcheck()) {
Warning #88 dcheck ^ (warning)
609: if (pct(33)) {
Warning #88 pct ^ (warning)
VERB.C: vfind()
669: object == liqloc(loc))
Warning #88 liqloc ^ (warning)
VERB.C: vread()
786: if (dark()) {
Warning #88 dark ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oVERB.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 234
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>z80as rand.as
Z80AS Macro-Assembler V4.8
Errors: 0
Finished.
c>xsub
c>link
link> -ptext=0,data,bss -c100h -oadvent.com \
link> crtcpm.obj advent.obj database.obj english.obj itverb.obj \
link> turn.obj verb.obj rand.obj libc.lib
(xsub active)
c>clock
00:05:42 since the last clock call...
(xsub active)
c>advent
Welcome to ADVENTURE!
=====================
-Original development by Willie Crowther.
-Major features added by Don Woods.
-Conversion to BDS C by J. R. Jaeger
-Unix standardization by Jerry D. Pohl.
-OS/2 Conversion by Martin Heller
-Conversion to TurboC 2.0 by Daimler
Would you like instructions?
Somewhere nearby is Colossal Cave, where others have
found fortunes in treasure and gold, though it is rumored
that some who enter are never seen again. Magic is said
to work in the cave. I will be your eyes and hands. Direct
me with commands of 1 or 2 words. I should warn you that I
look at only the first five letters of each word, so you'll
have to enter "Northeast" as "ne" to distinguish it from
"North". (Should you get stuck, type "help" for some
general hints).
You are inside a building, a well house for a large spring.
There are some keys on the ground here.
There is a shiny brass lamp nearby.
There is tasty food here.
There is a bottle of water here.
^C
c>
-------------------
Ladislau
I've just tried it, it's doing some very strange things on my sc114.
first compile of advent.c seems ok
second compile database.c produces:
F>d:c -v -c -o database.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:D:CPP -DCPM -DHI_TECH_C -Dz80 -I0:D: DATABASE.C $CTMP1.$$$
0:D:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
0:D:CGEN $CTMP2.$$$ $CTMP1.$$$
0:D:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:D:ZAS -J -N -oDATABASE.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
U 01A6' 21 0000 ld hl,19f
U 0392' 21 0000 ld hl,29f
U 03C1' 21 0000 ld hl,39f
O ld
N p]z4v)?Yp]Q(YxUloc

Errors: 5

then the entire directory and contents of all the files are deleted from f:
dir now shows:
F>dir
F: : : :
F: : : :
F: : : :
F: : : :
F: : : :
F: : : :
F: : : :
F: : : :
F: : : :
F: : : :
F: : : :
F: : : :
F: : : :
F: : : :
F: : : :
etc

Derek
Derek Cooper
2023-10-28 12:41:37 UTC
Permalink
Post by Derek Cooper
Post by ladislau szilagyi
(this was executed on Z80ALL, on RC2014(SC108) it takes about 20 minutes...)
---------------
c>submit buildadv
c>clock reset
c>c -v -c -o advent.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ADVENT.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
ADVENT.C: main()
59: else if (yes(65, 1, 0))
Warning #88 yes ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oADVENT.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 38
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>c -v -c -o database.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I DATABASE.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oDATABASE.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 47
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>c -v -c -o english.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ENGLISH.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oENGLISH.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 36
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>c -v -c -o itverb.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ITVERB.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
ITVERB.C: ivtake()
104: if(anobj==0|| (dcheck() && dflag>=2)) {
Warning #88 dcheck ^ (warning)
ITVERB.C: ivopen()
117: if(here(14))
Warning #88 here ^ (warning)
121: if(at(9))
Warning #88 at ^ (warning)
ITVERB.C: ivdrink()
192: if(liqloc(loc) != 21 &&
Warning #88 liqloc ^ (warning)
193: (liq()!= 21 || !here(20)))
Warning #88 liq ^ (warning)
ITVERB.C: ivquit()
206: if(gaveup=yes(22,54,54))
Warning #88 yes ^ (warning)
ITVERB.C: ivfoo()
229: k = vocab(word1,3000);
Warning #88 vocab ^ (warning)
242: (toting(56) && loc == 92)) {
Warning #88 toting ^ (warning)
ITVERB.C: ivread()
271: if (object > 100 || object == 0 || dark()) {
Warning #88 dark ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oITVERB.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 61
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>c -v -c -o turn.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I TURN.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
TURN.C: turn()
36: if (newloc != loc && !forced(loc) && cond[loc]&8 == 0)
Warning #88 forced ^ (warning)
67: if (wzdark && dark() && pct(35)) {
Warning #88 dark ^ (warning)
Warning #88 pct ^ (warning)
84: if (prop[15] < 0 && toting (15))
Warning #88 toting ^ (warning)
95: if (stimer())
Warning #88 stimer ^ (warning)
98: while (!english())
Warning #88 english ^ (warning)
TURN.C: descitem()
137: if (at(i)) {
Warning #88 at ^ (warning)
TURN.C: death()
469: yea = yes(81+numdie*2, 82+numdie*2, 54);
Warning #88 yes ^ (warning)
491: }
^ unused variable definition: k (warning)
TURN.C: doobj()
503: if (fixed[object] == loc || here(object))
Warning #88 here ^ (warning)
521: else if (dcheck() && dflag >= 2) {
Warning #88 dcheck ^ (warning)
528: else if ((liq() == object && here(20)) ||
Warning #88 liq ^ (warning)
529: liqloc(loc) == object)
Warning #88 liqloc ^ (warning)
558: }
^ unused variable definition: i (warning)
TURN.C: stimer()
793: prop[20] = put(20, 115, 1);
Warning #88 put ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
TURN.C:36: constant relational expression
TURN.C:643: constant relational expression
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oTURN.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 212
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>c -v -c -o verb.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I VERB.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
VERB.C: vtake()
111: if (toting(object)) {
Warning #88 toting ^ (warning)
133: if (!here(20) || liq() != object) {
Warning #88 here ^ (warning)
Warning #88 liq ^ (warning)
VERB.C: vdrop()
217: else if (object == 8 && at(31) && prop[31] == 0){
Warning #88 at ^ (warning)
VERB.C: vkill()
460: if (!yes(49,0,0))
Warning #88 yes ^ (warning)
VERB.C: vthrow()
607: if (i = dcheck()) {
Warning #88 dcheck ^ (warning)
609: if (pct(33)) {
Warning #88 pct ^ (warning)
VERB.C: vfind()
669: object == liqloc(loc))
Warning #88 liqloc ^ (warning)
VERB.C: vread()
786: if (dark()) {
Warning #88 dark ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oVERB.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
Errors: 0
Jump optimizations done: 234
Finished.
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$
c>z80as rand.as
Z80AS Macro-Assembler V4.8
Errors: 0
Finished.
c>xsub
c>link
link> -ptext=0,data,bss -c100h -oadvent.com \
link> crtcpm.obj advent.obj database.obj english.obj itverb.obj \
link> turn.obj verb.obj rand.obj libc.lib
(xsub active)
c>clock
00:05:42 since the last clock call...
(xsub active)
c>advent
Welcome to ADVENTURE!
=====================
-Original development by Willie Crowther.
-Major features added by Don Woods.
-Conversion to BDS C by J. R. Jaeger
-Unix standardization by Jerry D. Pohl.
-OS/2 Conversion by Martin Heller
-Conversion to TurboC 2.0 by Daimler
Would you like instructions?
Somewhere nearby is Colossal Cave, where others have
found fortunes in treasure and gold, though it is rumored
that some who enter are never seen again. Magic is said
to work in the cave. I will be your eyes and hands. Direct
me with commands of 1 or 2 words. I should warn you that I
look at only the first five letters of each word, so you'll
have to enter "Northeast" as "ne" to distinguish it from
"North". (Should you get stuck, type "help" for some
general hints).
You are inside a building, a well house for a large spring.
There are some keys on the ground here.
There is a shiny brass lamp nearby.
There is tasty food here.
There is a bottle of water here.
^C
c>
-------------------
Ladislau
I've just tried it, it's doing some very strange things on my sc114.
first compile of advent.c seems ok
F>d:c -v -c -o database.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:D:CPP -DCPM -DHI_TECH_C -Dz80 -I0:D: DATABASE.C $CTMP1.$$$
0:D:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
0:D:CGEN $CTMP2.$$$ $CTMP1.$$$
0:D:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:D:ZAS -J -N -oDATABASE.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
U 01A6' 21 0000 ld hl,19f
U 0392' 21 0000 ld hl,29f
U 03C1' 21 0000 ld hl,39f
O ld
N p]z4v)?Yp]Q(YxUloc
Errors: 5
F>dir
etc
Derek
Success !
(after a new CF-card....)


F>d:link
link> -ptext=0,data,bss -c100h -oadvent.com \
link> crtcpm.obj advent.obj database.obj english.obj itverb.obj \
link> turn.obj verb.obj rand.obj d:libc.lib

F>advent


Welcome to ADVENTURE!
=====================
-Original development by Willie Crowther.
-Major features added by Don Woods.
-Conversion to BDS C by J. R. Jaeger
-Unix standardization by Jerry D. Pohl.
-OS/2 Conversion by Martin Heller
-Conversion to TurboC 2.0 by Daimler

Would you like instructions?
Post by Derek Cooper
yes
Somewhere nearby is Colossal Cave, where others have
found fortunes in treasure and gold, though it is rumored
that some who enter are never seen again. Magic is said
to work in the cave. I will be your eyes and hands. Direct
me with commands of 1 or 2 words. I should warn you that I
look at only the first five letters of each word, so you'll
have to enter "Northeast" as "ne" to distinguish it from
"North". (Should you get stuck, type "help" for some
general hints).

You are inside a building, a well house for a large spring.
There are some keys on the ground here.
There is a shiny brass lamp nearby.
There is tasty food here.
There is a bottle of water here.
ladislau szilagyi
2023-10-28 12:48:22 UTC
Permalink
Hi Derek,

sorry for the incident...

The fact that one C file was compiled OK (advent.c) shows that the enhanced HiTech C version for SC114 works OK.
That's a relief for me, I do not have a SC114 (but I tested on a compatible configuration - the Phillip Stevens 32KB ROM + 128KB RAM )

But, let's see, what happened with your disk F?
The incident you described seems to me related to a limit being reached (disk directory full, files max nr/disk reached, ...)

But, let's take one step at a time...

First, I checked my disks having enough free space and enough free slots in the directories.

Then, I tried to do exactly what you did.

I have the HiTech C on D.

I moved all the source files to F:

D>pip f: = d:rand.as
D>pip f: = d:advent.c
D>pip f: = d:database.c
D>pip f: = d:english.c
D>pip f: = d:itverb.c
D>pip f: = d:turn.c
D>pip f: = d:verb.c
D>pip f: = d:advcave.h
D>pip f: = d:advdec.h
D>pip f: = d:advdef.h
D>pip f: = d:advent.h
D>pip f: = d:advtext.h
D>pip f: = d:advword.h

BUT, then, I erased the HiTech C from F: (let's see, the HiTech C executables, from where are they loaded ?)

F>era c.com
F>era cpp.com
F>era cgen.com
F>era optim.com
F>era zas.com

then, I tried exactly what you did:

F>d:c -v -c -o advent.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP: Not found - change disks, hit a key

Ups... it turns out that despite calling C to be executed from D, C tries then to load the rest of the HiTech executables from the local disk (F)

!!! That's the first warning !!!

Next, I copied back the HiTech executables to F, but replaced ZAS with an older version of Z80AS ( which allows only a small number of temporary labels to be used...)

And I tried the same:

F>d:c -v -c -o advent.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ADVENT.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
ADVENT.C: main()
79: else if (yes(65, 1, 0))
Warning #88 yes ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$
0:OPTIM $CTMP1.$$$ $CTMP2.$$$
0:ZAS -J -N -oADVENT.OBJ $CTMP2.$$$
Z80AS Macro-Assembler V4.8
E 057A" 0000 defw 4019f
E 057C" 0000 defw 4029f
E 057E" 0000 defw 4039f
E 0580" 0000 defw 4049f
E 0582" 0000 defw 4059f
E 0584" 0000 defw 4069f
E 0586" 0000 defw 4079f
E 0588" 0000 defw 4089f
E 058A" 0000 defw 4099f
E 058C" 0000 defw 4109f
E 058E" 0000 defw 4119f
E 0590" 0000 defw 4129f
E 0592" 0000 defw 4139f
E 0594" 0000 defw 4149f
E 0596" 0000 defw 4159f
E 0598" 0000 defw 4169f
E 059A" 0000 defw 4179f
E 059C" 0000 defw 4189f
E 059E" 0000 defw 4199f
E 05A0" 0000 defw 4209f
E 05A2" 0000 defw 4219f
E 05A4" 0000 defw 4229f
E 05A6" 0000 defw 4239f
E 05A8" 0000 defw 4249f
E 05AA" 0000 defw 4259f
E 05AC" 0000 defw 4269f
E 05AE" 0000 defw 4279f
E 05B0" 0000 defw 4289f
E 05B2" 0000 defw 4299f
E 05B4" 0000 defw 4309f
E 05B6" 0000 defw 4319f
E 05B8" 0000 defw 4329f
E 05BA" 0000 defw 4339f
E 05BC" 0000 defw 4349f
E 05BE" 0000 defw 4359f
E 05C0" 0000 defw 4369f
E 05C2" 0000 defw 4379f
E 05C4" 0000 defw 4389f
E 05C6" 0000 defw 4399f
E 05C8" 0000 defw 4409f
E 05CA" 0000 defw 4419f
E 00EA' 21 0000 ld hl,4429f
E 0170' 21 0000 ld hl,4439f
E 01C5' 21 0000 ld hl,4449f
E 01D1' 21 0000 ld hl,4459f
E 01DD' 21 0000 ld hl,4469f
E 01E9' 21 0000 ld hl,4479f
E 01F5' 21 0000 ld hl,4489f
E 0201' 21 0000 ld hl,4499f
E 020D' 21 0000 ld hl,4509f
E 0219' 21 0000 ld hl,4519f
E 0225' 21 0000 ld hl,4529f
E 0231' 21 0000 ld hl,4539f
E 024E' 21 0000 ld hl,4549f
E 025A' 21 0000 ld hl,4559f
E 0266' 21 0000 ld hl,4569f
E 0272' 21 0000 ld hl,4579f
E 027E' 21 0000 ld hl,4589f
E 028A' 21 0000 ld hl,4599f
E 02A7' 21 0000 ld hl,4609f
E 02B3' 21 0000 ld hl,4619f
E 02BF' 21 0000 ld hl,4629f
E 02CB' 21 0000 ld hl,4639f
E 02D7' 21 0000 ld hl,4649f
E 02E3' 21 0000 ld hl,4659f
E 02EF' 21 0000 ld hl,4669f
E 02FB' 21 0000 ld hl,4679f
E 0382' 21 0000 ld hl,4689f
E 038E' 21 0000 ld hl,4699f
E 03A0' 21 0000 ld hl,4709f
E 03DE' 21 0000 ld hl,4729f
E 03E2' 21 0000 ld hl,4719f
E 03F2' 21 0000 ld hl,4739f
E 03FD' 21 0000 ld hl,4759f
E 0401' 21 0000 ld hl,4749f
E 0411' 21 0000 ld hl,4769f
E 041C' 21 0000 ld hl,4789f
E 0420' 21 0000 ld hl,4779f
E 0430' 21 0000 ld hl,4799f
E 043B' 21 0000 ld hl,4819f
E 043F' 21 0000 ld hl,4809f
E 044E' 21 0000 ld hl,4829f
E 045E' 21 0000 ld hl,4839f
E 046D' 21 0000 ld hl,4849f
E 04AB' 21 0000 ld hl,4859f
E 04BB' 21 0000 ld hl,4869f
E 04E0' 21 0000 ld hl,4879f

(well, not a catastrophe, as in your case, my files were not deleted...but that's not definitely OK...)

Of course, Z80AS failed... because it was executed from F, not from D, where the last version of the HiTech C toolset is stored.

Next, I tried to produce some "limit" situations:

Let's see what is the status of F:

F>sdir *.obj

Directory For Drive F: User 0

Name Bytes Recs Attributes Name Bytes Recs Attributes
------------ ------ ------ ------------ ------------ ------ ------ ------------
ADVENT OBJ 0k 0 Dir RW BOOT OBJ 4k 14 Dir RW
CPMBOOT OBJ 4k 8 Dir RW CRTCPM OBJ 4k 3 Dir RW
SIO OBJ 4k 6 Dir RW SIOTST OBJ 4k 6 Dir RW
T OBJ 12k 88 Dir RW TASM1 OBJ 8k 34 Dir RW
UTIL OBJ 4k 18 Dir RW VGA OBJ 4k 12 Dir RW

Total Bytes = 48k Total Records = 189 Files Found = 10
Total 1k Blocks = 27 Used/Max Dir Entries For Drive F: 510/ 512

F>era boot.obj

(OK, I have now space for 3 more files)

F>d:c -v -c -o advent.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ADVENT.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
$CTMP1.$$$:
0: Error #95 $CTMP3.$$$
ERA $CTMP1.$$$
ERA $CTMP2.$$$
ERA $CTMP3.$$$
ERA $$EXEC.$$$

(Ah, so I need more free file slots in the directory ...)

F>era siotst.obj
F>sdir *.obj

Directory For Drive F: User 0

Name Bytes Recs Attributes Name Bytes Recs Attributes
------------ ------ ------ ------------ ------------ ------ ------ ------------
ADVENT OBJ 0k 0 Dir RW CPMBOOT OBJ 4k 8 Dir RW
CRTCPM OBJ 4k 3 Dir RW SIO OBJ 4k 6 Dir RW
T OBJ 12k 88 Dir RW TASM1 OBJ 8k 34 Dir RW
UTIL OBJ 4k 18 Dir RW VGA OBJ 4k 12 Dir RW

Total Bytes = 40k Total Records = 169 Files Found = 8
Total 1k Blocks = 24 Used/Max Dir Entries For Drive F: 508/ 512

(Now, I have 4 free file slots)

F>d:c -v -c -o advent.c
HI-TECH C COMPILER (CP/M-80) V3.09
Copyright (C) 1984-87 HI-TECH SOFTWARE
0:CPP -DCPM -DHI_TECH_C -Dz80 -I ADVENT.C $CTMP1.$$$
0:P1 $CTMP1.$$$ $CTMP2.$$$ $CTMP3.$$$
ADVENT.C: main()
79: else if (yes(65, 1, 0))
Warning #88 yes ^ (warning)
0:CGEN $CTMP2.$$$ $CTMP1.$$$

(AND THE SYSTEM IS DEAD !!!)

!!! that was the second warning !!!

(I was lucky though, my files survived :)
(but, my disk directory is full:)

Total Bytes = 5872k Total Records = 38335 Files Found = 464
Total 1k Blocks = 5007 Used/Max Dir Entries For Drive F: 512/ 512

Of course, in "close-to-limit" conditions, things can easily get out of control, and I was lucky, my F disk survived...

To sum up:

1. using commands like F>d:c -v -c -o advent.c , without being sure that on F you have the same HiTech executables as on D, is like playing russian roulette... you might have some nasty surprises.

2. when I want to make a test with a new executable, I first want to be sure that my system has enough free space on disk/directory; I do not like to made experiments in an environment with resources close to the limit.

This being said, I'm sorry about the incident that wiped your F drive, and I want to thank you for your patience in testing my enhanced HiTech C compiler.

regards,
Ladislau
ladislau szilagyi
2023-10-28 12:52:34 UTC
Permalink
Again,
Many thanks Derek, now I'm sure that the enhanced HiTech C is working well also on SC114.

I hope you succeeded to recover your files...

regards,
Ladislau
Derek Cooper
2023-10-30 09:56:50 UTC
Permalink
Post by ladislau szilagyi
Again,
Many thanks Derek, now I'm sure that the enhanced HiTech C is working well also on SC114.
I hope you succeeded to recover your files...
regards,
Ladislau
It's all working ok now bye the way.

Loading...