diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 18bde264..b2673f50 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -39,6 +39,8 @@ Version 3.1.1 - WBW: Added preliminary support for DSKYng - WBW: Elevated MBC to a platform - WBW: Added support for MBC user LEDs +- PMS: Early DMA support +- W?S: Updated FLASH software to v1.3.5 (supports 128KB A29010B, 512KB A29040B) Version 3.1 ----------- diff --git a/Source/Apps/Clean.cmd b/Source/Apps/Clean.cmd index 70b6dcee..36424e12 100644 --- a/Source/Apps/Clean.cmd +++ b/Source/Apps/Clean.cmd @@ -11,3 +11,4 @@ setlocal & cd XM && call Clean || exit /b 1 & endlocal setlocal & cd FDU && call Clean || exit /b 1 & endlocal setlocal & cd Tune && call Clean || exit /b 1 & endlocal setlocal & cd FAT && call Clean || exit /b 1 & endlocal +setlocal & cd I2C && call Clean || exit /b 1 & endlocal diff --git a/Source/Apps/I2C/Makefile b/Source/Apps/I2C/Makefile index cdee4fdd..e205dc82 100644 --- a/Source/Apps/I2C/Makefile +++ b/Source/Apps/I2C/Makefile @@ -1,4 +1,4 @@ -OBJECTS = i2cscan.com, rtcds7.com, i2clcd.com +OBJECTS = i2cscan.com rtcds7.com i2clcd.com DEST = ../../../Binary/Apps TOOLS = ../../../Tools diff --git a/Source/Apps/Makefile b/Source/Apps/Makefile index c2785b51..322bb6cc 100644 --- a/Source/Apps/Makefile +++ b/Source/Apps/Makefile @@ -1,6 +1,6 @@ OBJECTS = sysgen.com survey.com \ syscopy.com assign.com format.com talk.com mode.com rtc.com \ - timer.com inttest.com rtcds7.com rtchb.com ppidetst.com tstdskng.com + timer.com inttest.com rtchb.com ppidetst.com tstdskng.com OTHERS = *.hex *.com SUBDIRS = XM FDU FAT Tune I2C DEST = ../../Binary/Apps diff --git a/Source/Apps/rtc.asm b/Source/Apps/rtc.asm index 21f337f6..5a4ebeb5 100644 --- a/Source/Apps/rtc.asm +++ b/Source/Apps/rtc.asm @@ -27,6 +27,8 @@ ; ;[2020/05/15] v1.6 Added Warm Start option ; +;[2021/07/10] v1.7 Support MBC (AJL) +; ; Constants ; mask_data .EQU %10000000 ; RTC data line @@ -43,6 +45,7 @@ PORT_EZZ80 .EQU $C0 ; RTC port for EZZ80 (actually does not have one!!!) PORT_SCZ180 .EQU $0C ; RTC port for SCZ180 PORT_DYNO .EQU $0C ; RTC port for DYNO PORT_RCZ280 .EQU $C0 ; RTC port for RCZ280 +PORT_MBC .EQU $70 ; RTC port for MBC BDOS .EQU 5 ; BDOS invocation vector @@ -1046,9 +1049,9 @@ RTC_HELP RTC_INIT: CALL IDBIO ; Id BIOS, 1=HBIOS, 2=UBIOS DEC A ; Test for HBIOS - JR Z,HINIT ; Do HBIOS setup + JP Z,HINIT ; Do HBIOS setup DEC A ; Test for UBIOS - JR Z,UINIT ; Do UBIOS setup + JP Z,UINIT ; Do UBIOS setup ; ; Neither UNA nor RomWBW LD DE,BIOERR ; BIOS error message @@ -1118,6 +1121,11 @@ HINIT: LD DE,PLT_RCZ280 CP 12 ; RCZ280 JR Z,RTC_INIT2 +; + LD C,PORT_MBC + LD DE,PLT_MBC + CP 13 ; MBC + JR Z,RTC_INIT2 ; ; Unknown platform LD DE,PLTERR ; BIOS error message @@ -1614,7 +1622,7 @@ TESTING_BIT_DELAY_OVER: RTC_HELP_MSG: .DB 0Ah, 0Dh ; line feed and carriage return - .TEXT "RTC: Version 1.5" + .TEXT "RTC: Version 1.7" .DB 0Ah, 0Dh ; line feed and carriage return .TEXT "Commands: E)xit T)ime st(A)rt S)et R)aw L)oop C)harge N)ocharge D)elay I)nit G)et P)ut B)oot W)arm-start H)elp" .DB 0Ah, 0Dh ; line feed and carriage return @@ -1742,6 +1750,7 @@ PLT_EZZ80 .TEXT ", Easy Z80 RTC Module Latch Port 0xC0\r\n$" PLT_SCZ180 .TEXT ", SC Z180 RTC Module Latch Port 0x0C\r\n$" PLT_DYNO .TEXT ", DYNO RTC Module Latch Port 0x0C\r\n$" PLT_RCZ280 .TEXT ", RC2014 Z280 RTC Module Latch Port 0xC0\r\n$" +PLT_MBC .TEXT ", MBC RTC Latch Port 0x70\r\n$" ; ; Generic FOR-NEXT loop algorithm diff --git a/Source/Apps/tstdskng.asm b/Source/Apps/tstdskng.asm index d1abd87e..dc1927bb 100644 --- a/Source/Apps/tstdskng.asm +++ b/Source/Apps/tstdskng.asm @@ -16,7 +16,7 @@ FALSE: .EQU 0 TRUE: .EQU !FALSE ; -DSKY_OSC: .EQU 2000000 ; OSCILLATOR FREQ IN HZ +DSKY_OSC: .EQU 1000000 ; OSCILLATOR FREQ IN HZ ; BDOS: .EQU FALSE ; BDOS OR DIRECT TO 8250ISH ; @@ -31,25 +31,25 @@ PPI_BASE: .EQU $60 ; PPI BASE IO PORT ; 10 04 ; +--08--+ 80 ; -; KEY CODE MAP (KEY CODES) --CCCRRR +; KEY CODE MAP (KEY CODES) --CCCRRR ; -; 00 08 10 18 -; 01 09 11 19 -; 02 0A 12 1A -; 03 0B 13 1B -; 04 0C 14 1C -; 05 0D 15 1D +; 00 08 10 18 23 +; 01 09 11 19 22 +; 02 0A 12 1A 21 +; 03 0B 13 1B 20 +; 04 0C 14 1C SHIFT +; 05 0D 15 1D CONTROL ; ; LED BIT MAP (BIT VALUES) ; -; $08 $09 $0A $0B -; --- --- --- --- -; 01 01 01 01 -; 02 02 02 02 -; 04 04 04 04 -; 08 08 08 08 -; 10 10 10 10 -; 20 20 20 20 +; $08 $09 $0A $0B $0C +; --- --- --- --- --- +; 01 01 01 01 01 +; 02 02 02 02 02 +; 04 04 04 04 04 +; 08 08 08 08 08 +; 10 10 10 10 10 +; 20 20 20 20 20 ; PPIA: .EQU PPI_BASE + 0 ; PORT A PPIB: .EQU PPI_BASE + 1 ; PORT B @@ -62,12 +62,12 @@ DSKY_PPIX_WR: .EQU %10000010 ; PPIX VALUE FOR WRITES ; PIO CHANNEL C: ; ; 7 6 5 4 3 2 1 0 -; RES /RD /WR CS CS 0 0 A0 +; RES 0 0 CS CS /RD /WR A0 ; ; SETTING BITS 3 & 4 WILL ASSERT /CS ON 3279 -; CLEAR BITS 5 OR 6 TO ASSERT READ/WRITE +; CLEAR BITS 1 OR 2 TO ASSERT READ/WRITE ; -DSKY_PPI_IDLE: .EQU %01100000 +DSKY_PPI_IDLE: .EQU %00000110 ; DSKY_CMD_CLR: .EQU %11011111 ; CLEAR (ALL OFF) DSKY_CMD_CLRX: .EQU %11010011 ; CLEAR (ALL ON) @@ -176,7 +176,7 @@ M1: LD C,0 LD HL,DSPBUF CALL DSKY_PUTENCSTR -; +; M2: CALL CST ; CONSOLE STATUS JR NZ,M4 ; ABORT IF KEY PRESSED @@ -243,12 +243,18 @@ M4: ; DANCING LIGHTS CALL PRTSTRD .DB "\r\nDance, Baby, Dance (console key to end)...$" + + LD A,DSKY_CMD_CLR + CALL DSKY_CMD ; + + + LD E,$01 ; STARTING VALUE M5: CALL CST ; CONSOLE STATUS JR NZ,M8 ; ABORT IF KEY PRESSED - LD B,12 ; NUMBER OF BYTES + LD B,16 ; NUMBER OF BYTES LD C,$00 ; STARTING LOCATION (BYTE) M6: LD A,E @@ -268,14 +274,14 @@ M8: LD A,DSKY_CMD_CLR CALL DSKY_CMD ; -EXIT: +EXIT: ; GOODBYE CALL PRTSTRD .DB "\r\nThank you, please call again\r\n$" ; ; CLEAN UP AND RETURN TO OS LD SP,(STACKSAV) -; +; RET ; ; SETUP PPI FOR WRITING: PUT PPI PORT A IN OUTPUT MODE @@ -288,7 +294,7 @@ DSKY_PPIWR: LD A,(DSKY_PPIX_VAL) CP DSKY_PPIX_WR JR Z,DSKY_PPIWR1 -; +; ; SET PPI TO WRITE MODE LD A,DSKY_PPIX_WR OUT (PPIX),A @@ -317,7 +323,7 @@ DSKY_PPIRD: LD A,(DSKY_PPIX_VAL) CP DSKY_PPIX_RD JR Z,DSKY_PPIRD1 -; +; ; SET PPI TO READ MODE LD A,DSKY_PPIX_RD OUT (PPIX),A @@ -409,10 +415,10 @@ DSKY_DOUT2: OUT (PPIA),A ; ; PULSE /WR - RES 5,B + RES 1,B OUT (C),B NOP ; MAY NOT BE NEEDED - SET 5,B + SET 1,B OUT (C),B ; ; DEASSERT /CS @@ -462,14 +468,14 @@ DSKY_DIN2: LD B,A ; ; ASSERT /RD - RES 6,B + RES 2,B OUT (C),B ; ; GET VALUE IN A,(PPIA) ; ; DEASSERT /RD - SET 6,B + SET 2,B OUT (C),B ; ; DEASSERT /CS @@ -536,7 +542,7 @@ DSKY_PUTSTR: ADD A,DSKY_CMD_WDSP CALL DSKY_CMD POP BC -; +; DSKY_PUTSTR1: LD A,(HL) XOR $FF @@ -556,7 +562,7 @@ DSKY_GETSTR: ADD A,DSKY_CMD_RDSP CALL DSKY_CMD POP BC -; +; DSKY_GETSTR1: PUSH BC CALL DSKY_DIN @@ -623,7 +629,7 @@ DSKY_READ: CALL DSKY_GETSTR LD B,$10 LD HL,DSPBUF -DSKY_READ1: +DSKY_READ1: LD A,(HL) INC HL CALL PC_SPACE @@ -639,7 +645,7 @@ COUT: PUSH DE ; PUSH HL ; -#IF BDOS +#IF BDOS LD C,2 ; BDOS FUNC: CONSOLE OUTPUT LD E,A ; CHARACTER TO E CALL $0005 ; CALL BDOS @@ -984,7 +990,7 @@ DSKY_PPIX_VAL: .DB 0 DSPBUF: .FILL 16,0 ; PAT1: .DB $01,$02,$04,$08,$10,$20,$40,$80 - .DB $11,$22,$44,$88,$FF,$FF,$FF,$FF + .DB $11,$22,$44,$88,$00,$00,$00,$00 PAT1LN: .EQU $ - PAT1 PAT2: .DB $01,$03,$07,$0F,$1F,$3F,$7F,$FF .DB $11,$33,$77,$FF,$00,$00,$00,$00 diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index 129dc15f..ac0c488c 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -229,3 +229,7 @@ AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] ; SPKENABLE .EQU TRUE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) +; +DMAENABLE .EQU FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM) +DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS +DMAMODE .EQU DMAMODE_NONE ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC) diff --git a/Source/HBIOS/dskyng.asm b/Source/HBIOS/dskyng.asm index 53305e6a..3ae20965 100644 --- a/Source/HBIOS/dskyng.asm +++ b/Source/HBIOS/dskyng.asm @@ -13,25 +13,25 @@ ; 10 04 ; +--08--+ 80 ; -; KEY CODE MAP (KEY CODES) --CCCRRR +; KEY CODE MAP (KEY CODES) --CCCRRR ; -; 00 08 10 18 -; 01 09 11 19 -; 02 0A 12 1A -; 03 0B 13 1B -; 04 0C 14 1C -; 05 0D 15 1D +; 00 08 10 18 23 +; 01 09 11 19 22 +; 02 0A 12 1A 21 +; 03 0B 13 1B 20 +; 04 0C 14 1C SHIFT +; 05 0D 15 1D CTRL ; ; LED BIT MAP (BIT VALUES) ; -; $08 $09 $0A $0B -; --- --- --- --- -; 01 01 01 01 -; 02 02 02 02 -; 04 04 04 04 -; 08 08 08 08 -; 10 10 10 10 -; 20 20 20 20 +; $08 $09 $0A $0B $0C +; --- --- --- --- --- +; 01 01 01 01 01 +; 02 02 02 02 02 +; 04 04 04 04 04 +; 08 08 08 08 08 +; 10 10 10 10 10 +; 20 20 20 20 10 ; PPIA .EQU DSKYPPIBASE + 0 ; PORT A PPIB .EQU DSKYPPIBASE + 1 ; PORT B @@ -44,12 +44,12 @@ DSKY_PPIX_WR: .EQU %10000010 ; PPIX VALUE FOR WRITES ; PIO CHANNEL C: ; ; 7 6 5 4 3 2 1 0 -; RES /RD /WR CS CS 0 0 A0 +; RES 0 0 CS CS /RD /WR A0 ; ; SETTING BITS 3 & 4 WILL ASSERT /CS ON 3279 -; CLEAR BITS 5 OR 6 TO ASSERT READ/WRITE +; CLEAR BITS 1 OR 2 TO ASSERT READ/WRITE ; -DSKY_PPI_IDLE: .EQU %01100000 +DSKY_PPI_IDLE: .EQU %00000110 ; DSKY_CMD_CLR: .EQU %11011111 ; CLEAR (ALL OFF) DSKY_CMD_CLRX: .EQU %11010011 ; CLEAR (ALL ON) @@ -87,8 +87,8 @@ DSKY_REINIT: ; SET CLOCK SCALER TO 20 LD A,DSKY_CMD_CLK | DSKY_PRESCL CALL DSKY_CMD - LD A,%00001000 ; dan - CALL DSKY_CMD +; LD A,%00001000 ; dan +; CALL DSKY_CMD ; FALL THRU ; DSKY_RESET: @@ -123,6 +123,10 @@ KY_DE .EQU $14 ; DEPOSIT KY_EX .EQU $15 ; EXAMINE KY_GO .EQU $16 ; GO KY_BO .EQU $17 ; BOOT +KY_F4 .EQU $18 ; F4 +KY_F3 .EQU $19 ; F3 +KY_F2 .EQU $20 ; F2 +KY_F1 .EQU $21 ; F1 ; ;__DSKY_STAT_________________________________________________________________________________________ ; @@ -145,7 +149,8 @@ DSKY_GETKEY: LD A,DSKY_CMD_FIFO CALL DSKY_CMD CALL DSKY_DIN - LD B,24 ; SIZE OF DECODE TABLE + AND $3F ; STRIP OFF SHIFT AND CONTROL KEYS (FOR NOW) + LD B,28 ; SIZE OF DECODE TABLE LD C,0 ; INDEX LD HL,DSKY_KEYMAP ; POINT TO BEGINNING OF TABLE DSKY_GETKEY1: @@ -167,14 +172,19 @@ DSKY_KEYMAP: ; POS $00 $01 $02 $03 $04 $05 $06 $07 ; KEY [0] [1] [2] [3] [4] [5] [6] [7] .DB $0D, $04, $0C, $14, $03, $0B, $13, $02 -; +; ; POS $08 $09 $0A $0B $0C $0D $0E $0F ; KEY [8] [9] [A] [B] [C] [D] [E] [F] .DB $0A, $12, $01, $09, $11, $00, $08, $10 -; +; ; POS $10 $11 $12 $13 $14 $15 $16 $17 ; KEY [FW] [BK] [CL] [EN] [DE] [EX] [GO] [BO] .DB $05, $15, $1D, $1C, $1B, $1A, $19, $18 + + ; POS $18 $19 $20 $21 + ; KEY [F4] [F3] [F2] [F1] + .DB $23, $22, $21, $20 + ; #ENDIF ; DSKY_KBD ; @@ -279,10 +289,10 @@ DSKY_DOUT2: OUT (PPIA),A ; ; PULSE /WR - RES 5,B + RES 1,B OUT (C),B NOP ; MAY NOT BE NEEDED - SET 5,B + SET 1,B OUT (C),B ; ; DEASSERT /CS @@ -332,14 +342,14 @@ DSKY_DIN2: LD B,A ; ; ASSERT /RD - RES 6,B + RES 2,B OUT (C),B ; ; GET VALUE IN A,(PPIA) ; ; DEASSERT /RD - SET 6,B + SET 2,B OUT (C),B ; ; DEASSERT /CS @@ -406,7 +416,7 @@ DSKY_PUTSTR: ADD A,DSKY_CMD_WDSP CALL DSKY_CMD POP BC -; +; DSKY_PUTSTR1: LD A,(HL) XOR $FF @@ -426,7 +436,7 @@ DSKY_GETSTR: ADD A,DSKY_CMD_RDSP CALL DSKY_CMD POP BC -; +; DSKY_GETSTR1: PUSH BC CALL DSKY_DIN @@ -471,7 +481,7 @@ DSKY_PPIWR: LD A,(DSKY_PPIX_VAL) CP DSKY_PPIX_WR JR Z,DSKY_PPIWR1 -; +; ; SET PPI TO WRITE MODE LD A,DSKY_PPIX_WR OUT (PPIX),A @@ -505,7 +515,7 @@ DSKY_PPIRD: LD A,(DSKY_PPIX_VAL) CP DSKY_PPIX_RD JR Z,DSKY_PPIRD1 -; +; ; SET PPI TO READ MODE LD A,DSKY_PPIX_RD OUT (PPIX),A diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 92a29c8a..c922a8eb 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -1225,6 +1225,15 @@ Z280_INITZ: OUT (EIPC_SCDP),A ; SET SYSTEM CONTROL DATA PORT (SCDP) #ENDIF ; +#IF ((MEMMGR == MM_SBC) | (MEMMGR == MM_MBC)) + ; SET PAGING REGISTERS + #IFDEF ROMBOOT + XOR A + OUT (MPCL_RAM),A ; REMOVE RAM FIRST! + OUT (MPCL_ROM),A ; SELECT ROM PAGE 0 + #ENDIF +#ENDIF +; #IF (MEMMGR == MM_Z2) ; SET PAGING REGISTERS #IFDEF ROMBOOT diff --git a/Source/Images/Common/FLASH.COM b/Source/Images/Common/FLASH.COM index c81f9c54..d1833a1b 100644 Binary files a/Source/Images/Common/FLASH.COM and b/Source/Images/Common/FLASH.COM differ diff --git a/Source/RomDsk/ROM_1024KB/FLASH.COM b/Source/RomDsk/ROM_1024KB/FLASH.COM index c81f9c54..d1833a1b 100644 Binary files a/Source/RomDsk/ROM_1024KB/FLASH.COM and b/Source/RomDsk/ROM_1024KB/FLASH.COM differ diff --git a/Source/RomDsk/ROM_512KB/FLASH.COM b/Source/RomDsk/ROM_512KB/FLASH.COM index c81f9c54..d1833a1b 100644 Binary files a/Source/RomDsk/ROM_512KB/FLASH.COM and b/Source/RomDsk/ROM_512KB/FLASH.COM differ diff --git a/Source/ver.inc b/Source/ver.inc index d74d870b..da066ebd 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.86" +#DEFINE BIOSVER "3.1.1-pre.87" diff --git a/Source/ver.lib b/Source/ver.lib index 9fd10d30..c85d1eba 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.86" + db "3.1.1-pre.87" endm diff --git a/Tools/unix/bin2asm/Makefile b/Tools/unix/bin2asm/Makefile index 27af4088..ec98153d 100644 --- a/Tools/unix/bin2asm/Makefile +++ b/Tools/unix/bin2asm/Makefile @@ -8,7 +8,7 @@ SRC_FILES = $(wildcard *.c) OBJ_FILES = $(SRC_FILES:.c=.o) all: $(BINARY) $(DEST) - cp $(BINARY) $(DEST) + cp -p $(BINARY) $(DEST) $(DEST): mkdir -p $(DEST) diff --git a/Tools/unix/bst/Makefile b/Tools/unix/bst/Makefile index 0d269dea..d3170586 100644 --- a/Tools/unix/bst/Makefile +++ b/Tools/unix/bst/Makefile @@ -14,7 +14,7 @@ DEST = ../../$(UNAME) all: $(DEST) -for i in *.$(SUFFIX) ; do \ chmod +x $$i ; \ - cp $$i $(DEST)/$$(basename $$i .$(SUFFIX)) ; \ + cp -p $$i $(DEST)/$$(basename $$i .$(SUFFIX)) ; \ done $(DEST): diff --git a/Tools/unix/cpmtools/Makefile b/Tools/unix/cpmtools/Makefile index d630b6f2..9c850895 100644 --- a/Tools/unix/cpmtools/Makefile +++ b/Tools/unix/cpmtools/Makefile @@ -23,7 +23,7 @@ DEVICEOBJ = device_posix.o OBJECTS = cpmls cpmrm cpmcp cpmchmod cpmchattr mkfs.cpm fsck.cpm fsed.cpm all: $(OBJECTS) $(DEST) - cp $(OBJECTS) $(DEST) + cp -p $(OBJECTS) $(DEST) cpmls: cpmls.o cpmfs.o getopt.o getopt1.o $(DEVICEOBJ) $(CC) $(LDFLAGS) -o $@ cpmls.o cpmfs.o getopt.o getopt1.o $(DEVICEOBJ) diff --git a/Tools/unix/lzsa/Makefile b/Tools/unix/lzsa/Makefile index 0e0e7b28..84df4aab 100644 --- a/Tools/unix/lzsa/Makefile +++ b/Tools/unix/lzsa/Makefile @@ -33,7 +33,7 @@ OBJS += $(OBJDIR)/src/libdivsufsort/lib/trsort.o UNAME := $(shell uname) all: $(APP) - cp $(APP) ../../$(UNAME) + cp -p $(APP) ../../$(UNAME) $(APP): $(OBJS) @mkdir -p ../../bin/posix diff --git a/Tools/unix/uz80as/Makefile b/Tools/unix/uz80as/Makefile index b99987aa..1a22b386 100644 --- a/Tools/unix/uz80as/Makefile +++ b/Tools/unix/uz80as/Makefile @@ -44,7 +44,7 @@ SOURCES = \ mc6800.c all: uz80as $(DEST) - cp uz80as $(DEST) + cp -p uz80as $(DEST) $(DEST): mkdir -p $(DEST) diff --git a/Tools/unix/zx/Makefile b/Tools/unix/zx/Makefile index 995d1243..12adc60f 100644 --- a/Tools/unix/zx/Makefile +++ b/Tools/unix/zx/Makefile @@ -17,7 +17,7 @@ OBJECTS = zx.o cpmdrv.o cpmglob.o cpmparse.o cpmredir.o \ UNUSED = dirent.o all: zx $(DEST) - cp bios.bin zx $(DEST) + cp -p bios.bin zx $(DEST) $(DEST): mkdir -p $(DEST)