Browse Source

Fixed SURVEY Crash on SBC Platform

Hacked to avoid bank switch problem.  See issue #316
pull/331/head
Wayne Warthen 3 years ago
parent
commit
53bdee68d5
  1. 1
      Doc/ChangeLog.txt
  2. 4
      Source/Apps/Build.cmd
  3. 1
      Source/Apps/Clean.cmd
  4. 10
      Source/Apps/Makefile
  5. 16
      Source/Apps/Survey/Build.cmd
  6. 8
      Source/Apps/Survey/Clean.cmd
  7. 6
      Source/Apps/Survey/Makefile
  8. 53
      Source/Apps/Survey/survey.mac

1
Doc/ChangeLog.txt

@ -68,6 +68,7 @@ Version 3.1.1
- L?N: Updated ZDE to v1.8 including time stamp preservation fixes
- D?M: Minor update to CP/NET client files, fix to CPNBOOT
- WBW: Added p-System IV.0 Z80 implementation
- WBW: Hacked SURVEY to work around bank switching crash
Version 3.1
-----------

4
Source/Apps/Build.cmd

@ -21,9 +21,6 @@ call :asm rtchb || exit /b
zxcc Z80ASM -SYSGEN/F || exit /b
zxcc MAC SURVEY.ASM -$PO || exit /b
zxcc MLOAD25 -SURVEY.COM=SURVEY.HEX || exit /b
pushd XM && call Build || exit /b & popd
pushd FDU && call Build || exit /b & popd
pushd Tune && call Build || exit /b & popd
@ -34,6 +31,7 @@ pushd ZMD && call Build || exit /b & popd
pushd Dev && call Build || exit /b & popd
pushd VGM && call Build || exit /b & popd
pushd cpuspd && call Build || exit /b & popd
pushd Survey && call Build || exit /b & popd
copy *.com %APPBIN%\ || exit /b

1
Source/Apps/Clean.cmd

@ -17,3 +17,4 @@ pushd ZMD && call Clean || exit /b 1 & popd
pushd Dev && call Clean || exit /b 1 & popd
pushd VGM && call Clean || exit /b 1 & popd
pushd cpuspd && call Clean || exit /b 1 & popd
pushd Survey && call Clean || exit /b 1 & popd

10
Source/Apps/Makefile

@ -1,13 +1,9 @@
OBJECTS = sysgen.com survey.com \
syscopy.com assign.com format.com talk.com mode.com rtc.com \
timer.com rtchb.com
SUBDIRS = XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd
OBJECTS = sysgen.com syscopy.com assign.com format.com talk.com \
mode.com rtc.com timer.com rtchb.com
SUBDIRS = XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd Survey
DEST = ../../Binary/Apps
TOOLS =../../Tools
include $(TOOLS)/Makefile.inc
USETASM = 1
survey.com: USETASM = 0

16
Source/Apps/Survey/Build.cmd

@ -0,0 +1,16 @@
@echo off
setlocal
set TOOLS=..\..\..\Tools
set PATH=%TOOLS%\zxcc;%PATH%
set CPMDIR80=%TOOLS%/cpm/
:: zxcc MAC survey.asm -$PO || exit /b
:: zxcc MLOAD25 survey || exit /b
zxcc M80 -,=survey/L/R
zxcc L80 -survey,survey/N/E
:: copy /Y survey.com ..\..\..\Binary\Apps\ || exit /b

8
Source/Apps/Survey/Clean.cmd

@ -0,0 +1,8 @@
@echo off
setlocal
if exist *.hex del *.hex
if exist *.rel del *.rel
if exist *.prn del *.prn
if exist *.lst del *.lst
if exist *.com del *.com

6
Source/Apps/Survey/Makefile

@ -0,0 +1,6 @@
OBJECTS = survey.com
DEST = ../../../Binary/Apps
TOOLS = ../../../Tools
OTHERS = *.hex
include $(TOOLS)/Makefile.inc

53
Source/Apps/survey.asm → Source/Apps/Survey/survey.mac

@ -15,6 +15,10 @@
;
;VERSION LIST - Most recent version first.
;
;10/Feb/23 - Total hack to avoid crash on ECB SBC
; RomWBW now required by this version
; Wayne Warthen
;
;16/Dec/17 - Handle 16-bit port addressing using
; Z80 IN A,(C) instruction. Wayne Warthen
;
@ -234,7 +238,21 @@ TABS EQU 9 ; Tab columns
; MAIN PROGRAM ;
;***********************;
;
ORG 100H
;ORG 100H
;
;
;
.Z80
LD HL,IMGORG
LD DE,START
LD BC,IMGEND-IMGORG
LDIR
JP START
.8080
;
IMGORG:
;
.PHASE 8000H
;
START:
LXI H,0 ; Save stack pointer
@ -242,7 +260,8 @@ START:
SHLD OLDSP
LXI SP,FINIS+64
CALL TYPE ; Type initial CRLF
DB TAB,TAB,'*** System Survey (December 17) ***'
DW CRLF,CRLF
DB TAB,'*** RomWBW System Survey (Feb 2023) ***'
DW CRLF,CRLFE
;DISK SURVEY
@ -586,6 +605,13 @@ PDLY:
MOV A,H ; ON CONSOLE STATUS PORT
ORA L
JNZ PDLY
;
.Z80
; RECORD THE ACTIVE BANK
LD A,(0FFE0H) ; GET CURRENT HBIOS BANK ID
LD (BANK),A ; AND SAVE IT
.8080
;
LXI H,0 ; Init active port counter
mvi d,0 ; Init port counter
mvi e,0ffh ; init port group variable
@ -596,11 +622,23 @@ PORTLP:
CPI SKIPORT
JZ ISPORT ; Print mask port
ENDIF
;
mov c,a ; port number to reg c
mvi b,0 ; for 16 bit port addressing
db 0edh,078h ; z80: in a,(c)
.Z80
in a,(c)
.8080
;
.Z80
; MAKE SURE CORRECT BANK IS STILL SELECTED!
push af
ld a,(BANK)
call 0FFF3H
pop af
.8080
;
; inactive port could return 0xFF or 0x78 or the port address
;
cmp c
jz nextpt
cpi 0FFh
@ -708,7 +746,6 @@ BITSHF:
JNZ BITSHF
RET
;***********************;
; DATA STORAGE ;
;***********************;
@ -722,6 +759,12 @@ RAMF: DS 1 ; RAM good flag
EMPF: DS 1 ; Empty so far flag
BLKSHF: DS 1 ; block shift factor
MAXALL: DS 2 ; maximum block number
BANK: DS 1 ; saved HBIOS bank id
FINIS EQU $ ; End of program
;
.DEPHASE
;
IMGEND:
;
END

Loading…
Cancel
Save