mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Compare commits
7 Commits
v3.1.1-pre
...
v3.1.1-pre
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9f3c9e180d | ||
|
|
97bc3ba3b5 | ||
|
|
8e414a3efc | ||
|
|
a0d437357e | ||
|
|
0b0b3611bb | ||
|
|
dd22c54f32 | ||
|
|
4e153a2bc1 |
@@ -21,6 +21,7 @@ pushd vdctest && call Build || exit /b & popd
|
||||
pushd kbdtest && call Build || exit /b & popd
|
||||
pushd ps2info && call Build || exit /b & popd
|
||||
pushd 2piotst && call Build || exit /b & popd
|
||||
pushd piomon && call Build || exit /b & popd
|
||||
|
||||
goto :eof
|
||||
|
||||
|
||||
@@ -18,3 +18,4 @@ pushd vdctest && call Clean || exit /b 1 & popd
|
||||
pushd kbdtest && call Clean || exit /b 1 & popd
|
||||
pushd ps2info && call Clean || exit /b 1 & popd
|
||||
pushd 2piotst && call Clean || exit /b 1 & popd
|
||||
pushd piomon && call Clean || exit /b 1 & popd
|
||||
|
||||
@@ -1 +1,8 @@
|
||||
DMAmon is a program to verify operation of the Z80 MBC DMA board
|
||||
|
||||
Version 2 has been hacked to include testing for interrupts. This
|
||||
requires running the application under RomWBW using IM2. There
|
||||
is an equate in the source file to disable interrupt testing
|
||||
if needed.
|
||||
|
||||
--WBW 10:36 AM 3/14/2022
|
||||
@@ -16,6 +16,14 @@ TRUE .EQU ~FALSE
|
||||
SPD_FIXED .EQU 0 ; PLATFORM SPEED FIXED AND CANNOT CHANGE SPEEDS
|
||||
SPD_HILO .EQU 1 ; PLATFORM CAN CHANGE BETWEEN TWO SPEEDS
|
||||
;
|
||||
; INTERRUPT TESTING CONFIGURATION
|
||||
; N.B., INTERRUPT TESTING REQUIRES ROMWBW!!!
|
||||
; ASSUMES SYSTEM IS ALREADY CONFIGURED FOR IM2 OPERATION
|
||||
; INTIDX MUST BE SET TO AN UNUSED INTERRUPT SLOT
|
||||
;
|
||||
INTENABLE .EQU TRUE ; ENABLE INT TESTING
|
||||
INTIDX .EQU 1 ; INT VECTOR INDEX
|
||||
;
|
||||
; SYSTEM SPEED CHARACTERISTICS
|
||||
;
|
||||
SPD_UNSUP .EQU 0 ; PLATFORM CAN CHANGE SPEEDS BUT IS UNSUPPORTED
|
||||
@@ -56,14 +64,20 @@ DMA_RESET .equ $c3
|
||||
;DMA_RESET_PORT_B_TIMING .equ $cb
|
||||
;DMA_CONTINUE .equ $d3
|
||||
;DMA_DISABLE_INTERUPTS .equ $af
|
||||
;DMA_ENABLE_INTERUPTS .equ $ab
|
||||
DMA_ENABLE_INTERUPTS .equ $ab
|
||||
;DMA_RESET_DISABLE_INTERUPTS .equ $a3
|
||||
;DMA_ENABLE_AFTER_RETI .equ $b7
|
||||
;DMA_REINIT_STATUS_BYTE .equ $8b
|
||||
DMA_REINIT_STATUS_BYTE .equ $8b
|
||||
;
|
||||
DMA_RDY .EQU %00001000
|
||||
DMA_FORCE .EQU 0
|
||||
|
||||
;
|
||||
bf_sysint .equ $FC ; INT function
|
||||
;
|
||||
bf_sysintinfo .equ $00 ; INT INFO subfunction
|
||||
bf_sysintget .equ $10 ; INT GET subfunction
|
||||
bf_sysintset .equ $20 ; INT SET subfunction
|
||||
;
|
||||
#IF (DMA_USEHS & (DMAMODE=DMAMODE_MBC))
|
||||
#IF (CPUSPDDEF=SPD_HIGH)
|
||||
#DEFINE DMAIOSLO LD A,(HB_RTCVAL) \ AND %11110111 \ OUT (RTCIO),A
|
||||
@@ -100,66 +114,128 @@ MAIN:
|
||||
LD SP,STACK ; STACK
|
||||
;
|
||||
call PRTSTRD ; WELCOME
|
||||
.db "DMA MONITOR\n\r$"
|
||||
.db "\n\rDMA Monitor V2\n\r$"
|
||||
;
|
||||
#IF (INTENABLE)
|
||||
;
|
||||
; Install interrupt handler in upper mem
|
||||
ld hl,reladr
|
||||
ld de,$A000
|
||||
ld bc,hsiz
|
||||
ldir
|
||||
;
|
||||
; Install interrupt vector (RomWBW specific!!!)
|
||||
ld hl,int ; pointer to my interrupt handler
|
||||
ld b,bf_sysint
|
||||
ld c,bf_sysintset ; set new vector
|
||||
ld e,INTIDX ; vector idx
|
||||
di
|
||||
rst 08 ; do it
|
||||
ld (orgvec),hl ; save the original vector
|
||||
ei ; interrupts back on
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
MENULP: CALL DISPM ; DISPLAY MENU
|
||||
CALL CIN ; GET SELECTION
|
||||
; Force upper case
|
||||
CP 'a' ; < 'a'
|
||||
JR C,MENULP1 ; IF SO, JUST CONTINUE
|
||||
CP 'z'+1 ; > 'z'
|
||||
JR NC,MENULP1 ; IS SO, JUST CONTINUE
|
||||
SUB 'a'-'A' ; CONVERT TO UPPER
|
||||
;
|
||||
MENULP1:
|
||||
CALL NEWLINE
|
||||
CP 'D'
|
||||
JP Z,DMATST_D ; DUMP REGISTERS
|
||||
CP 'I'
|
||||
JP Z,DMATST_I ; INITIALIZE
|
||||
#IF (INTENABLE)
|
||||
CP 'T'
|
||||
JP Z,DMATST_T ; TOGGLE INT USAGE
|
||||
#ENDIF
|
||||
CP 'M'
|
||||
JP Z,DMATST_M ; MEMORY MOVE
|
||||
JP Z,DMATST_M ; MEMORY COPY
|
||||
CP 'N'
|
||||
JP Z,DMATST_N ; MEMORY COPY ITER
|
||||
CP '0'
|
||||
JP Z,DMATST_01
|
||||
CP '1'
|
||||
JR Z,DMATST_01
|
||||
JP Z,DMATST_01
|
||||
CP 'R'
|
||||
JP Z,DMATST_R ; TOGGLE RESET
|
||||
CP 'Y'
|
||||
JP Z,DMATST_Y ; TOGGLE READY
|
||||
CP 'X'
|
||||
JR Z,DMABYE ; EXIT
|
||||
JP Z,DMABYE ; EXIT
|
||||
;
|
||||
JR MENULP
|
||||
;
|
||||
DMABYE: LD SP,(SAVSTK) ; RESTORE CP/M STACK
|
||||
DMABYE:
|
||||
#IF (INTENABLE)
|
||||
; Deinstall interrupt vector
|
||||
ld hl,(orgvec) ; original vector
|
||||
ld b,bf_sysint
|
||||
ld c,bf_sysintset ; set new vector
|
||||
ld e,INTIDX ; vector idx
|
||||
di
|
||||
rst 08 ; do it
|
||||
ei ; interrupts back on
|
||||
#ENDIF
|
||||
;
|
||||
LD SP,(SAVSTK) ; RESTORE CP/M STACK
|
||||
RET
|
||||
;
|
||||
DMATST_I:
|
||||
call PRTSTRD
|
||||
.db "\n\rSTART DMA_INIT\n\r$"
|
||||
.db "\n\rStart Initialization\n\r$"
|
||||
CALL DMA_INIT
|
||||
JP MENULP
|
||||
;
|
||||
#IF (INTENABLE)
|
||||
;
|
||||
DMATST_T:
|
||||
LD A,(USEINT)
|
||||
XOR $FF
|
||||
LD (USEINT),A
|
||||
JP MENULP
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
DMATST_M:
|
||||
call PRTSTRD
|
||||
.db "\n\rSTART DMAMemMove\n\r$"
|
||||
CALL DMAMemMove
|
||||
.db "\n\rPerforming Memory-Memory Copy Test\n\r$"
|
||||
CALL DMAMemTest
|
||||
JP MENULP
|
||||
;
|
||||
DMATST_N:
|
||||
call PRTSTRD
|
||||
.db "\n\rPerforming Iterative Memory-Memory Copy Test\n\r$"
|
||||
CALL DMAMemTestIter
|
||||
JP MENULP
|
||||
;
|
||||
DMATST_01:
|
||||
call PRTSTRD
|
||||
.db "\n\rTOGGLE PORT\n\r$"
|
||||
.db "\n\rPerforming Port Selection Test\n\r$"
|
||||
CALL DMA_Port01
|
||||
JP MENULP
|
||||
;
|
||||
DMATST_D:
|
||||
call PRTSTRD
|
||||
.db "\n\rSTART DMARegDump\n\r$"
|
||||
.db "\n\rDump Registers\n\r$"
|
||||
CALL DMARegDump
|
||||
JP MENULP
|
||||
;
|
||||
DMATST_Y:
|
||||
call PRTSTRD
|
||||
.db "\n\rTEST READY\n\r$"
|
||||
.db "\n\rPerforming Ready Bit Test\n\r$"
|
||||
CALL DMA_ReadyT
|
||||
JP MENULP
|
||||
;
|
||||
DMATST_R:
|
||||
call PRTSTRD
|
||||
.db "\n\rRESET\n\r$"
|
||||
.db "\n\rPerforming Reset\n\r$"
|
||||
; CALL
|
||||
JP MENULP
|
||||
;==================================================================================================
|
||||
@@ -167,19 +243,39 @@ DMATST_R:
|
||||
;==================================================================================================
|
||||
;
|
||||
DISPM: call PRTSTRD
|
||||
.db "\n\rDMA DEVICE: $"
|
||||
.db "\n\rDMA Device: $"
|
||||
LD C,DMAMODE ; DISPLAY
|
||||
LD A,00000111B ; TARGET
|
||||
LD DE,DMA_DEV_STR ; DEVICE
|
||||
CALL PRTIDXMSK
|
||||
CALL NEWLINE
|
||||
;
|
||||
call PRTSTRD
|
||||
.db "DMA PORT: $"
|
||||
.db ", Port=0x$"
|
||||
LD A,DMABASE ; DISPLAY
|
||||
CALL PRTHEXBYTE ; DMA PORT
|
||||
CALL NEWLINE
|
||||
;
|
||||
#IF (INTENABLE)
|
||||
;
|
||||
call PRTSTRD
|
||||
.db "\n\rInterrupts=$"
|
||||
LD A,(USEINT)
|
||||
OR A
|
||||
LD A,'Y'
|
||||
JR NZ,DISPM_INT
|
||||
LD A,'N'
|
||||
JR DISPM_INT
|
||||
;
|
||||
DISPM_INT:
|
||||
CALL COUT
|
||||
;
|
||||
call PRTSTRD
|
||||
.db ", Interrupt Count=$"
|
||||
ld hl,(counter)
|
||||
call PRTDEC
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
call NEWLINE
|
||||
LD HL,MENU_OPT ; DISPLAY
|
||||
CALL PRTSTR ; MENU OPTIONS
|
||||
;
|
||||
@@ -206,7 +302,7 @@ DMA_INIT:
|
||||
jr nz,DMA_NOTFOUND
|
||||
;
|
||||
call PRTSTRD
|
||||
.db " DMA FOUND\n\r$"
|
||||
.db " DMA Found\n\r$"
|
||||
;
|
||||
ld hl,DMACode ; program the
|
||||
ld b,DMACode_Len ; dma command
|
||||
@@ -224,7 +320,7 @@ DMA_EXIT:
|
||||
DMA_NOTFOUND:
|
||||
push af
|
||||
call PRTSTRD
|
||||
.db " NOT PRESENT$"
|
||||
.db " NOT Present$"
|
||||
pop af
|
||||
jr DMA_EXIT
|
||||
;
|
||||
@@ -242,38 +338,41 @@ DMA_DEV_STR:
|
||||
MENU_OPT:
|
||||
.TEXT "\n\r"
|
||||
.TEXT "I) Initialize DMA\n\r"
|
||||
.TEXT "M) Memory to Memory test\n\r"
|
||||
.TEXT "0) DMA Port select test\n\r"
|
||||
.TEXT "1) DMA Latch Port select test\n\r"
|
||||
.TEXT "Y) Ready bit test\n\r"
|
||||
.TEXT "T) Toggle Interrupt Usage\n\r"
|
||||
.TEXT "M) Test Memory-Memory Copy\n\r"
|
||||
.TEXT "N) Test Memory-Memory Copy Iteratively\n\r"
|
||||
.TEXT "0) Test DMA Port Selection\n\r"
|
||||
.TEXT "1) Test DMA Latch Port Selection\n\r"
|
||||
.TEXT "Y) Test Ready Bit\n\r"
|
||||
.TEXT "X) Exit\n\r"
|
||||
|
||||
.TEXT ">$"
|
||||
;
|
||||
;==================================================================================================
|
||||
; TOGGLE A PORT ON AND OFF
|
||||
; PULSE PORT
|
||||
;==================================================================================================
|
||||
;
|
||||
DMA_Port01:
|
||||
call PRTSTRD
|
||||
.db "\r\nPulsing port 0x$"
|
||||
sub '0' ; Calculate
|
||||
add a,DMABASE ; Port to
|
||||
call PRTHEXBYTE
|
||||
call NEWLINE
|
||||
ld c,a ; toggle
|
||||
ld b,0
|
||||
ld b,$20 ; loop counter
|
||||
portlp: push bc
|
||||
call PRTSTRD
|
||||
.db "\n\rON ...$"
|
||||
call PRTHEXWORD
|
||||
call PC_PERIOD
|
||||
push bc
|
||||
ld b,0
|
||||
ld a,0
|
||||
portlp1:out (c),a
|
||||
djnz portlp1
|
||||
pop bc
|
||||
call PRTSTRD
|
||||
.db " OFF$"
|
||||
call delay
|
||||
pop bc
|
||||
djnz portlp
|
||||
call NEWLINE
|
||||
JP MENULP
|
||||
;
|
||||
delay: push bc
|
||||
@@ -290,18 +389,23 @@ dlylp: dec bc
|
||||
;==================================================================================================
|
||||
;
|
||||
DMA_ReadyT:
|
||||
call NEWLINE
|
||||
ld c,DMABASE+1 ; toggle
|
||||
ld b,0
|
||||
ld b,$20 ; loop counter
|
||||
portlp2:push bc
|
||||
ld a,b
|
||||
call PRTDECB
|
||||
call PRTSTRD
|
||||
.db "\n\rON ...$"
|
||||
call PRTHEXWORD
|
||||
.db ": ON$"
|
||||
call delay
|
||||
ld a,$FF
|
||||
ld c,DMABASE+1
|
||||
out (c),a
|
||||
call PRTSTRD
|
||||
.db " OFF$"
|
||||
.db " -> OFF$"
|
||||
call delay
|
||||
call PRTSTRD
|
||||
.db "\r \r$"
|
||||
ld c,DMABASE+1
|
||||
ld a,0
|
||||
out (c),a
|
||||
@@ -332,8 +436,16 @@ DMAMemMove:
|
||||
LD HL,PROEND ; DMA COPY
|
||||
LD DE,$8000
|
||||
LD BC,4096-1
|
||||
CALL DMALDIR
|
||||
|
||||
LD A,(USEINT) ; USE INTS?
|
||||
OR A ; TEST VALUE
|
||||
JR NZ,DMAMemMove1 ; IF SO, DO SO
|
||||
CALL DMALDIR ; ELSE NORMAL DMA
|
||||
JR DMAMemMove2
|
||||
;
|
||||
DMAMemMove1:
|
||||
CALL DMALDIRINT ; DMA W/ INTERRUPTS
|
||||
;
|
||||
DMAMemMove2:
|
||||
;
|
||||
; LD HL,$8400 ; PLANT
|
||||
; LD A,$00 ; BAD
|
||||
@@ -345,15 +457,57 @@ DMAMemMove:
|
||||
NXTCMP: CPI
|
||||
JP PO,CMPOK
|
||||
JR Z,NXTCMP
|
||||
|
||||
call PRTHEXWORD
|
||||
RET ; RET W/ ZF CLEAR
|
||||
;
|
||||
CMPOK:
|
||||
RET ; RET W/ ZF SET
|
||||
;
|
||||
;==================================================================================================
|
||||
; DMA MEMORY TEST
|
||||
;==================================================================================================
|
||||
;
|
||||
DMAMemTest:
|
||||
call DMAMemMove ; do a single memory copy
|
||||
jr z,DMAMemTestOK
|
||||
jr DMAMemTestFail
|
||||
;
|
||||
DMAMemTestOK:
|
||||
call PRTSTRD
|
||||
.db " TEST MEMORY MOVE FAILED\n\r$"
|
||||
RET
|
||||
|
||||
CMPOK: call PRTSTRD
|
||||
.db "TEST MEMORY MOVE SUCCEEDED\n\r$"
|
||||
RET
|
||||
.db "\n\rMemory-Memory Test Passed\n\r$"
|
||||
ret
|
||||
;
|
||||
DMAMemTestFail:
|
||||
call PRTSTRD
|
||||
.db "\n\rMemory-Memory Test Failed\n\r$"
|
||||
ret
|
||||
;
|
||||
;==================================================================================================
|
||||
; DMA MEMORY MOVE ITERATIVE
|
||||
;==================================================================================================
|
||||
;
|
||||
DMAMemTestIter:
|
||||
ld b,$20 ; loop counter
|
||||
call PRTSTRD
|
||||
.db "\n\rPerforming $"
|
||||
ld a,b
|
||||
call PRTDECB
|
||||
call PRTSTRD
|
||||
.db " iterations, '.'=OK, '*'=Fail\n\r$"
|
||||
DMAMemTestIterLoop:
|
||||
push bc ; save loop control
|
||||
call DMAMemMove ; do an iteration
|
||||
jr z,DMAMemTestIterOK
|
||||
call PC_ASTERISK ; signal failure
|
||||
jr DMAMemTestIterCont ; continue
|
||||
;
|
||||
DMAMemTestIterOK:
|
||||
call PC_PERIOD ; signal pass
|
||||
;
|
||||
DMAMemTestIterCont:
|
||||
pop bc
|
||||
djnz DMAMemTestIterLoop
|
||||
call NEWLINE
|
||||
ret
|
||||
;
|
||||
;==================================================================================================
|
||||
; DMA PROBE - WRITE TO ADDRESS REGISTER AND READ BACK
|
||||
@@ -455,6 +609,62 @@ DMADest .dw 0 ; R4-Port B, Destination address
|
||||
DMACopy_Len .equ $-DMACopy
|
||||
;
|
||||
;==================================================================================================
|
||||
; DMA COPY BLOCK CODE - ASSUMES DMA PREINITIALIZED
|
||||
; INTERRUPT VERSION!
|
||||
;==================================================================================================
|
||||
;
|
||||
DMALDIRINT:
|
||||
;
|
||||
#IF (INTENABLE)
|
||||
;
|
||||
ld (DMASourceInt),hl ; populate the dma
|
||||
ld (DMADestInt),de ; register template
|
||||
ld (DMALengthInt),bc
|
||||
;
|
||||
ld hl,DMACopyInt ; program the
|
||||
ld b,DMACopyInt_Len ; dma command
|
||||
ld c,DMABASE ; block
|
||||
;
|
||||
DMAIOSLO
|
||||
di
|
||||
otir ; load and execute dma
|
||||
ei
|
||||
;
|
||||
ld a,DMA_READ_STATUS_BYTE ; check status
|
||||
out (DMABASE),a ; of transfer
|
||||
in a,(DMABASE) ; set non-zero
|
||||
and %00111011 ; if failed
|
||||
sub %00011011
|
||||
DMAIONOR
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
ret
|
||||
;
|
||||
#IF (INTENABLE)
|
||||
;
|
||||
DMACopyInt ;.db DMA_DISABLE ; R6-Command Disable DMA
|
||||
.db %01111101 ; R0-Transfer mode, A -> B, start address, block length follow
|
||||
DMASourceInt .dw 0 ; R0-Port A, Start address
|
||||
DMALengthInt .dw 0 ; R0-Block length
|
||||
.db %00010100 ; R1-No timing bytes follow, address increments, is memory
|
||||
.db %00010000 ; R2-No timing bytes follow, address increments, is memory
|
||||
.db %10100000 ; R3-DMA, interrupt, stop on match disabled
|
||||
.db DMA_CONTINUOUS ; R4-Continuous mode, destination address, interrupt and control byte follow
|
||||
DMADestInt .dw 0 ; R4-Port B, Destination address
|
||||
.db %00011110 ; R4-Interrupt control byte: Pulse byte follows, Pulse generated
|
||||
.db 0 ; R4-Pulse control byte
|
||||
.db INTIDX*2 ; R4-Interrupt vector
|
||||
; .db %10010010+DMA_RDY;R5-Stop on end of block, ce/wait multiplexed, READY active config
|
||||
.db %10011010
|
||||
.db DMA_LOAD ; R6-Command Load
|
||||
.db DMA_FORCE_READY ; R6-Command Force ready
|
||||
.db DMA_ENABLE ; R6-Command Enable DMA
|
||||
DMACopyInt_Len .equ $-DMACopyInt
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
; DMA I/O OUT BLOCK CODE - ADDRESS TO I/O PORT
|
||||
;==================================================================================================
|
||||
;
|
||||
@@ -552,8 +762,6 @@ DMAIn_Len .equ $-DMAInCode
|
||||
; DEBUG - READ START, DESTINATION AND COUNT REGISTERS
|
||||
;==================================================================================================
|
||||
;
|
||||
;#IF (0)
|
||||
;
|
||||
DMARegDump:
|
||||
ld a,DMA_READ_MASK_FOLLOWS
|
||||
out (DMABASE),a
|
||||
@@ -586,7 +794,6 @@ DMARegDump:
|
||||
;
|
||||
call NEWLINE
|
||||
ret
|
||||
;#ENDIF
|
||||
;
|
||||
CIO_CONSOLE .EQU $80 ; CONSOLE UNIT TO C
|
||||
BF_CIOOUT .EQU $01 ; HBIOS FUNC: OUTPUT CHAR
|
||||
@@ -662,10 +869,52 @@ CST:
|
||||
POP DE
|
||||
POP BC
|
||||
RET
|
||||
|
||||
;
|
||||
USEINT .DB FALSE ; USE INTERRUPTS FLAG
|
||||
;
|
||||
SAVSTK: .DW 2
|
||||
.FILL 64
|
||||
STACK: .EQU $
|
||||
;
|
||||
orgvec .dw 0 ; saved interrupt vector
|
||||
;
|
||||
;===============================================================================
|
||||
; Interrupt Handler
|
||||
;===============================================================================
|
||||
;
|
||||
reladr .equ $ ; relocation start adr
|
||||
;
|
||||
.org $A000 ; code will run here
|
||||
;
|
||||
int:
|
||||
; According to the DMA doc, you must issue
|
||||
; a DMA_DISABLE command prior to a
|
||||
; DMA_REINIT_STATUS_BYTE command to avoid a
|
||||
; potential race condition.
|
||||
ld a,DMA_DISABLE
|
||||
out (DMABASE),a
|
||||
;
|
||||
; The doc confuses me, but apparently it is
|
||||
; necessary to reinitialize the status byte
|
||||
; when an end-of-block interrupt occurs. Otherwise,
|
||||
; the end-of-block condition remains set and
|
||||
; causes the interrupt to fire continuously.
|
||||
ld a,DMA_REINIT_STATUS_BYTE
|
||||
out (DMABASE),a
|
||||
;
|
||||
ld hl,(counter)
|
||||
inc hl
|
||||
ld (counter),hl
|
||||
;
|
||||
or $ff ; signal int handled
|
||||
ret
|
||||
;
|
||||
counter .dw 0
|
||||
;
|
||||
hsiz .equ $ - $A000 ; size of handler to relocate
|
||||
;
|
||||
.org reladr + hsiz
|
||||
;
|
||||
PROEND: .EQU $
|
||||
;
|
||||
.END
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
~/RomWBW-dev/Tools/unix/uz80as/uz80as -t z80 dmamon.asm dmamon.bin
|
||||
#srec_cat dmamon.bin -binary -offset 0x0100 --address-length=2 -o dmamon.hex -Intel
|
||||
cat dmamon.bin > dmamon.com
|
||||
@@ -1,5 +1,5 @@
|
||||
OBJECTS =
|
||||
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst
|
||||
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon
|
||||
DEST = ../../../Binary/Apps/Test
|
||||
TOOLS =../../../Tools
|
||||
|
||||
|
||||
10
Source/Apps/Test/piomon/Build.cmd
Normal file
10
Source/Apps/Test/piomon/Build.cmd
Normal file
@@ -0,0 +1,10 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set TOOLS=../../../../Tools
|
||||
set PATH=%TOOLS%\tasm32;%PATH%
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
tasm -t180 -g3 -fFF piomon.asm piomon.com piomon.lst || exit /b
|
||||
|
||||
copy /Y piomon.com ..\..\..\..\Binary\Apps\Test\ || exit /b
|
||||
6
Source/Apps/Test/piomon/Clean.cmd
Normal file
6
Source/Apps/Test/piomon/Clean.cmd
Normal file
@@ -0,0 +1,6 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
if exist *.com del *.com
|
||||
if exist *.lst del *.lst
|
||||
if exist *.bin del *.bin
|
||||
7
Source/Apps/Test/piomon/Makefile
Normal file
7
Source/Apps/Test/piomon/Makefile
Normal file
@@ -0,0 +1,7 @@
|
||||
OBJECTS = piomon.com
|
||||
DEST = ../../../../Binary/Apps/Test
|
||||
TOOLS =../../../../Tools
|
||||
|
||||
USETASM=1
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
36
Source/Apps/Test/piomon/Readme.txt
Normal file
36
Source/Apps/Test/piomon/Readme.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
PIOMON is a program to verify operation of the Z80 MBC DUALPIO board
|
||||
|
||||
Most testing requires the use of loopback hardware constructed as:
|
||||
|
||||
Channel A RDY STB D0 D1 D2 D3 D4 D5 D6 D7
|
||||
\ / | | | | | | | |
|
||||
\ / | | | | | | | |
|
||||
X | | | | | | | |
|
||||
/ \ | | | | | | | |
|
||||
/ \ | | | | | | | |
|
||||
Channel B RDY STB D0 D1 D2 D3 D4 D5 D6 D7
|
||||
|
||||
The DUALPIO has, well, 2 PIO chips. Only one chip
|
||||
is tested at a time. At startup, PIOMON will ask
|
||||
you for the port of the chip to test. It defaults
|
||||
to the standard port number for the primary PIO chip
|
||||
on an MBC DUALPIO board.
|
||||
|
||||
The port number specified is the base I/O port. Each
|
||||
chip has two channels which are addressed in the
|
||||
menu by specifying A or B.
|
||||
|
||||
MBC DUALPIO Primary PIO = 0xB8
|
||||
MBC DUALPIO Secondary PIO = 0xBC
|
||||
|
||||
If you try to use PIOMON without the RDY and STB
|
||||
cross connected, you may have interrupt issues
|
||||
because STB will be floating.
|
||||
|
||||
N.B., V1 and V2 of the DUALPIO lack a hardware reset. The
|
||||
PIO chips will reset at power-on, but they do not reset
|
||||
when the reset button is pushed.
|
||||
|
||||
Happy St. Patrick's Day!!!
|
||||
|
||||
--WBW 7:42 PM 3/17/2022
|
||||
1361
Source/Apps/Test/piomon/piomon.asm
Normal file
1361
Source/Apps/Test/piomon/piomon.asm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -179,6 +179,8 @@ PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (P
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
|
||||
@@ -221,6 +221,8 @@ PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (P
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
|
||||
@@ -286,6 +286,11 @@ PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -218,6 +218,11 @@ PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (P
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
PIOENABLE .EQU TRUE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -219,6 +219,11 @@ PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -217,6 +217,11 @@ PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (P
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -233,6 +233,11 @@ PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (P
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
|
||||
@@ -249,6 +249,11 @@ PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (P
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
|
||||
@@ -238,6 +238,11 @@ PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (P
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
|
||||
@@ -218,6 +218,11 @@ PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (P
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
|
||||
@@ -228,6 +228,11 @@ PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (P
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
|
||||
@@ -162,6 +162,11 @@ PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
|
||||
@@ -173,6 +173,8 @@ PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
|
||||
@@ -2825,6 +2825,9 @@ HB_PCINITTBL:
|
||||
#IF (ACIAENABLE)
|
||||
.DW ACIA_PREINIT
|
||||
#ENDIF
|
||||
#IF (PIOENABLE)
|
||||
.DW PIO_PREINIT
|
||||
#ENDIF
|
||||
#IF (PIO_4P | PIO_ZP)
|
||||
.DW PIO_PREINIT
|
||||
#ENDIF
|
||||
@@ -2944,6 +2947,9 @@ HB_INITTBL:
|
||||
#IF (PPPENABLE)
|
||||
.DW PPP_INIT
|
||||
#ENDIF
|
||||
#IF (PIOENABLE)
|
||||
.DW PIO_INIT
|
||||
#ENDIF
|
||||
#IF (PIO_4P | PIO_ZP)
|
||||
.DW PIO_INIT
|
||||
#ENDIF
|
||||
@@ -5897,6 +5903,15 @@ SIZ_SPK .EQU $ - ORG_SPK
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PIOENABLE)
|
||||
ORG_PIO .EQU $
|
||||
#INCLUDE "pio.asm"
|
||||
SIZ_PIO .EQU $ - ORG_PIO
|
||||
.ECHO "PIO occupies "
|
||||
.ECHO SIZ_PIO
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PIO_4P | PIO_ZP | PIO_SBC)
|
||||
ORG_PIO .EQU $
|
||||
#INCLUDE "pio.asm"
|
||||
@@ -6747,7 +6762,7 @@ PS_SDPRPCON .TEXT "PRPCON$"
|
||||
PS_SDPPPCON .TEXT "PPPCON$"
|
||||
PS_SDSIO .TEXT "SIO$"
|
||||
PS_SDACIA .TEXT "ACIA$"
|
||||
PS_SDPIO .TEXT "PORT$"
|
||||
PS_SDPIO .TEXT "PIO$"
|
||||
PS_SDUF .TEXT "UF$"
|
||||
PS_SDDUART .TEXT "DUART$"
|
||||
PS_SDZ2U .TEXT "Z2U$"
|
||||
|
||||
1202
Source/HBIOS/pio.asm
1202
Source/HBIOS/pio.asm
File diff suppressed because it is too large
Load Diff
999
Source/HBIOS/pio_ps.asm
Normal file
999
Source/HBIOS/pio_ps.asm
Normal file
@@ -0,0 +1,999 @@
|
||||
; PIO driver sets up the parallel port as a subtype of Serial/Char device.
|
||||
;
|
||||
;
|
||||
; HBIOS initializes driver by:
|
||||
;
|
||||
; 1) Calling Pre-initialization
|
||||
;
|
||||
; This involves setting up all the data structures describing the devices.
|
||||
; If possible, do a hardware test to verify it is available for adding to available devices.
|
||||
;
|
||||
; 2) Calling device initialization.
|
||||
;
|
||||
; Hardware initialization.
|
||||
; Configure to initial state or to a new state.
|
||||
;
|
||||
; Implementation limitations:
|
||||
;
|
||||
; The fully functionality of the Z80 PIO can only be realized by using Z80 interrupt mode 2.
|
||||
; Registers cannot be interrogated for interrupts status and the originating interrupt
|
||||
; device cannot be determine.
|
||||
;
|
||||
; Full implementation of IM2 functionality for an ECB-ZP and ECB-4P board would require the
|
||||
; allocation of an interrupt handler for each chip channel. Thus, 12 interrupt handlers
|
||||
; would be required to support this configuration. As the HBIOS only has an allocation of
|
||||
; 16, a full implmentation is impractical.
|
||||
;
|
||||
; The compromise solution is to allow 4 interrupts for the PIO driver. All remaining PIO's
|
||||
; are limited to Bit mode or blind read and write to the input/output ports.
|
||||
;
|
||||
; Zilog PIO reset state:
|
||||
;
|
||||
; Both port mask registers are reset to inhibit All port data bits.
|
||||
; Port data bus lines are set to a high-impedance state and the Ready "handshake"
|
||||
; Mode 1 (output) is automatically selected.
|
||||
; The vector address registers are not reset.
|
||||
; Both port interrupt enable flip-flops are reset.
|
||||
; Both port output registers are reset.
|
||||
;
|
||||
; Register addressing example for ECB-ZP and ECB-4P assuming base address 90h and 88h respectively.
|
||||
;
|
||||
; PIO ----ZP---- ----4P----
|
||||
; 0 DATA 0 90h DATA 0 B8h
|
||||
; 0 DATA 1 91h DATA 1 B9h
|
||||
; 0 CMD 0 92h CMD 0 BAh
|
||||
; 0 CMD 1 93h CMD 1 BBh
|
||||
; 1 DATA 0 94h DATA 0 BCh
|
||||
; 1 DATA 1 95h DATA 1 BDh
|
||||
; 1 CMD 0 96h CMD 0 BEh
|
||||
; 1 CMD 1 97h CMD 1 BFh
|
||||
; 2 DATA 0 C0h
|
||||
; 2 DATA 1 C1h
|
||||
; 2 CMD 0 C2h
|
||||
; 2 CMD 1 C3h
|
||||
; 3 DATA 0 C4h
|
||||
; 3 DATA 1 C5h
|
||||
; 3 CMD 0 C6h
|
||||
; 3 CMD 1 C7h
|
||||
;
|
||||
PIODEBUG .EQU 1
|
||||
;
|
||||
M_Output .EQU $00 << 6
|
||||
M_Input .EQU $01 << 6
|
||||
M_Bidir .EQU $02 << 6
|
||||
M_BitCtrl .EQU $03 << 6
|
||||
M_BitAllIn .EQU $FF
|
||||
M_BitAllOut .EQU $00
|
||||
;
|
||||
PIO_NONE .EQU 0
|
||||
PIO_ZPIO .EQU 1
|
||||
PIO_8255 .EQU 2
|
||||
PIO_PORT .EQU 3
|
||||
|
||||
; SET MAXIMUM NUMBER OF INTERRUPTS AVAILABLE FOR ALL
|
||||
; ENSURE INTERRUPTS ARE NOT TURNED ON IF IM2 IS NOT SET.
|
||||
|
||||
INT_ALLOC .DB 0
|
||||
INT_N .EQU 00000000B
|
||||
#IF (INTMODE == 2)
|
||||
INT_Y .EQU 00000100B
|
||||
INT_ALLOW .EQU 4
|
||||
#ELSE
|
||||
INT_Y .EQU INT_N
|
||||
INT_ALLOW .EQU 0
|
||||
#ENDIF
|
||||
;
|
||||
INT0 .EQU 00000000B
|
||||
INT1 .EQU 00000001B
|
||||
INT2 .EQU 00000010B
|
||||
INT3 .EQU 00000011B
|
||||
|
||||
;
|
||||
; SETUP THE DISPATCH TABLE ENTRIES
|
||||
;
|
||||
; PIO_CNT HOLDS THE NUMBER OF DEVICED CALCULATED FROM THE NUMBER OF DEFPIO MACROS
|
||||
; PIO_CNT SHOULD INCREASE BY 2 FOR EVERY PIO CHIP ADDED.
|
||||
;
|
||||
; PIO_PREINIT WILL READ THROUGH ALL PIOCFG TABLES AND CONFIGURE EACH TABLE.
|
||||
; IT WITH THEN CALL PIO_INITUNIT TO INITIALIZE EACH DEVICE TO ITS DEFAULT STATE
|
||||
;
|
||||
; EXPECTS NOTHING ON ENTRY
|
||||
;
|
||||
PIO_PREINIT:
|
||||
CALL NEWLINE ;D
|
||||
LD B,PIO_CNT ; LOOP CONTROL
|
||||
LD C,0 ; PHYSICAL UNIT INDEX
|
||||
XOR A ; ZERO TO ACCUM
|
||||
; LD (PIO_DEV),A ; CURRENT DEVICE NUMBER
|
||||
LD (INT_ALLOC),A ; START WITH NO INTERRUPTS ALLOCATED
|
||||
PIO_PREINIT0:
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
; LD A,C ; INITIALIZE THE UNIT
|
||||
|
||||
; PUSH AF ;D
|
||||
; LD A,'u' ;D
|
||||
; CALL COUT ;D
|
||||
; POP AF ;D
|
||||
; CALL PRTHEXBYTE ;D UNIT
|
||||
; CALL PC_SPACE ;D
|
||||
|
||||
; RLCA ; MULTIPLY BY CFG TABLE ENTRY SIZE (32 BYTES)
|
||||
; RLCA ; ...
|
||||
; RLCA ; ... TO GET OFFSET INTO CFG TABLE
|
||||
; RLCA
|
||||
;; RLCA
|
||||
; LD HL,PIO_CFG ; POINT TO START OF CFG TABLE
|
||||
; PUSH AF
|
||||
; CALL ADDHLA ; HL := ENTRY ADDRESS
|
||||
; POP AF
|
||||
; CALL ADDHLA ; HL := ENTRY ADDRESS
|
||||
; PUSH HL ; SAVE IT
|
||||
; POP IY ; ... TO IY
|
||||
|
||||
CALL IDXCFG
|
||||
|
||||
LD (HL),C
|
||||
|
||||
PUSH AF ;D
|
||||
LD A,'c' ;D
|
||||
CALL COUT ;D
|
||||
POP AF ;D
|
||||
PUSH BC ;D
|
||||
PUSH HL ;D
|
||||
POP BC ;D
|
||||
CALL PRTHEXWORD ;D CONFIG TABLE
|
||||
CALL PC_SPACE ;D
|
||||
POP BC ;D
|
||||
|
||||
LD A,(IY+1) ; GET THE PIO TYPE DETECTED
|
||||
CP PIO_PORT ; SET FLAGS
|
||||
|
||||
PUSH AF ;D
|
||||
LD A,'t' ;D
|
||||
CALL COUT ;D
|
||||
POP AF ;D
|
||||
CALL PRTHEXBYTE ;D TYPE
|
||||
CALL PC_SPACE ;D
|
||||
|
||||
; JR Z,BADINIT
|
||||
|
||||
; PUSH BC ; SAVE LOOP CONTROL
|
||||
; LD BC,PIO_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
; DEC A
|
||||
; JR Z,TYPFND ; SKIP IT IF NOTHING FOUND
|
||||
; LD BC,PPI_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
; DEC A
|
||||
; JR Z,TYPFND ; ADD ENTRY IF PIO FOUND, BC:DE
|
||||
; LD BC,PRT_FNTBL
|
||||
; DEC A
|
||||
; JR Z,TYPFND
|
||||
; POP BC
|
||||
; JR BADINIT
|
||||
|
||||
PUSH HL
|
||||
LD DE,-1 ; INITIALIZE THIS DEVICE WITH
|
||||
CALL PIO_INITDEV ; DEFAULT VALUES
|
||||
POP HL
|
||||
|
||||
; JR NZ,SKPINIT
|
||||
|
||||
; AT THIS POINT WE KNOW WE
|
||||
; HAVE A VALID DEVICE SO ADD IT
|
||||
|
||||
LD A,8 ; CALCULATE THE FUNCTION TABLE
|
||||
CALL ADDHLA ; POSITION WHICH FOLLOWS THE
|
||||
PUSH HL ; CONFIGURATION TABLE OF EACH
|
||||
POP BC ; DEVICE
|
||||
|
||||
TYPFND: PUSH AF ;D
|
||||
LD A,'f' ;D
|
||||
CALL COUT ;D
|
||||
POP AF ;D
|
||||
PUSH BC ;D
|
||||
CALL PRTHEXWORD ;D FUNCTION TABLE
|
||||
POP BC ;D
|
||||
CALL NEWLINE ;D
|
||||
|
||||
PUSH IY ; ADD ENTRY IF PIO FOUND, BC:DE
|
||||
POP DE ; BC: DRIVER FUNCTION TABLE
|
||||
CALL CIO_ADDENT ; DE: ADDRESS OF UNIT INSTANCE DATA
|
||||
|
||||
BADINIT:POP BC ; RESTORE LOOP CONTROL
|
||||
|
||||
INC C ; NEXT PHYSICAL UNIT
|
||||
SKPINIT:DJNZ PIO_PREINIT0 ; LOOP UNTIL DONE
|
||||
|
||||
PUSH AF ;D
|
||||
PRTS("INTS=$") ;D
|
||||
LD A,(INT_ALLOC) ;D
|
||||
CALL PRTHEXBYTE ;D
|
||||
POP AF ;D
|
||||
PUSH DE ;D
|
||||
LD DE,CIO_TBL-3 ;D
|
||||
CALL DUMP_BUFFER ;D
|
||||
POP DE ;D
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; AND RETURN
|
||||
;
|
||||
; INDEX INTO THE CONFIG TABLE
|
||||
; ON ENTRY C = UNIT NUMBER
|
||||
; ON EXIT IY = CONFIG DATA POINTER
|
||||
; ON EXIT DE = CONFIG TABLE START
|
||||
;
|
||||
; EACH CONFIG TABLE IS 24 BYTES LONG
|
||||
;
|
||||
CFG_SIZ .EQU 24
|
||||
;
|
||||
IDXCFG: LD A,C
|
||||
RLCA ; X 2
|
||||
RLCA ; X 4
|
||||
RLCA ; X 8
|
||||
LD H,0
|
||||
LD L,A ; HL = X 8
|
||||
PUSH HL
|
||||
ADD HL,HL ; HL = X 16
|
||||
POP DE
|
||||
ADD HL,DE ; HL = X 24
|
||||
LD DE,PIO_CFG
|
||||
ADD HL,DE
|
||||
PUSH HL ; COPY CFG DATA PTR
|
||||
POP IY ; ... TO IY
|
||||
RET
|
||||
|
||||
; PIO_INITDEV - INITIALIZE DEVICE
|
||||
;
|
||||
; IF DE = FFFF THEN THE SETUP PARAMETER WORD WILL BE READ FROM THE DEVICE CONFIGURATION
|
||||
; TABLE POINTED TO BY IY AND THE PIO PORT WILL BE PROGRAMMED BASED ON THAT CONFIGURATION.
|
||||
;
|
||||
; OTHERWISE THE PIO PORT WILL BE PROGRAMMED BY THE SETUP PARAMETER WORD IN DE AND THIS
|
||||
; WILL BE SAVED IN THE DEVICE CONFIGURATION TABLE POINTED TO BY IY.
|
||||
;
|
||||
; ALL OTHER CONFIGURATION OF THE DEVICE CONFIGURATION TABLE IS DONE UPSTEAM BY PIO_PREINIT
|
||||
|
||||
PIO_INITDEV:
|
||||
; TEST FOR -1 (FFFF) WHICH MEANS USE CURRENT CONFIG (JUST REINIT)
|
||||
LD A,D ; TEST DE FOR
|
||||
AND E ; ... VALUE OF -1
|
||||
INC A ; ... SO Z SET IF -1
|
||||
JR NZ,PIO_INITDEV1 ; IF DE == -1, REINIT CURRENT CONFIG
|
||||
PIO_INITDEV0:
|
||||
; LOAD EXISTING CONFIG (DCW) TO REINIT
|
||||
LD E,(IY+4) ; LOW BYTE
|
||||
LD D,(IY+5) ; HIGH BYTE
|
||||
;
|
||||
PIO_INITDEV1: ; WHICH DEVICE TYPE?
|
||||
LD A,(IY+1)
|
||||
CP PIO_ZPIO
|
||||
JR Z,SETPIO0
|
||||
CP PIO_8255
|
||||
JP Z,SET_8255
|
||||
CP PIO_PORT
|
||||
JP Z,SET_PORT
|
||||
BAD_SET:OR $FF ; UNKNOWN DEVICE
|
||||
RET
|
||||
|
||||
SETPIO0:LD A,E ; GET MODE
|
||||
AND 11000000B ; BITS (B7B6)
|
||||
CP 10000000B ; IS IT BIDIR?
|
||||
JR NZ,SETPIO1
|
||||
LD A,(IY+2) ; GET CHANNEL
|
||||
OR A
|
||||
JR NZ,BAD_SET ; CAN'T DO ON CH1
|
||||
|
||||
; VALIDATE INTERRUPT REQUEST
|
||||
; GRANT INTERRUPT IF THERE IS A FREE INTERRUPT
|
||||
; GRANT INTERRUPT IF AN INTERRUPT IS ALREADY ALLOCATED TO THIS UNIT
|
||||
|
||||
SETPIO1:PUSH AF ;D
|
||||
LD A,'[' ;D
|
||||
CALL COUT ;D
|
||||
LD A,(IY) ;D
|
||||
CALL PRTHEXBYTE ;D
|
||||
LD A,']' ;D
|
||||
CALL COUT ;D
|
||||
POP AF ;D
|
||||
|
||||
BIT 2,E ; SKIP IF WE ARE NOT REQUESTING
|
||||
JP Z,SETPIO2 ; AN INTERRUPT
|
||||
|
||||
PRTS("[INTREQ]$") ;D
|
||||
|
||||
; LD A,(IY+4) ; GET CURRENT INTERRUPT SETTING
|
||||
; BIT 2,A ; SKIP IF IT IS ALREADY
|
||||
; JP NZ,SETPIO2 ; ALLOCATED TO THIS UNIT
|
||||
|
||||
LD A,(INT_ALLOC) ; WE NEED TO ALLOCATE AN
|
||||
CP INT_ALLOW ; INTERRUPT. DO WE HAVE
|
||||
JR NC,BAD_SET ; ONE FREE?
|
||||
|
||||
PRTS("[ALLOCINT]$") ;D
|
||||
|
||||
; WHICH INTERRUPT IS FREE ?
|
||||
; SCAN THROUGH THE CFG TABLES
|
||||
; AND FIND A FREE ONE
|
||||
|
||||
PUSH AF ; NESTED LOOP
|
||||
LD DE,CFG_SIZ ; OUTSIDE LOOP IS INTERRUPT
|
||||
LD B,INT_ALLOW ; INSIDE LOOP IS DEVICE
|
||||
SETPIOP: LD C,B
|
||||
DEC C
|
||||
PUSH BC
|
||||
LD B,PIO_CNT
|
||||
LD HL,PIO_CFG+4
|
||||
SETPIOX: LD A,(HL)
|
||||
BIT 2,A ; JUMP TO NEXT DEVICE
|
||||
JR Z,SETPIOY ; IF NO INTERRUPT ON
|
||||
AND 00000011B ; THIS DEVICE
|
||||
|
||||
CP C ; IF WE MATCH AN INTERRUPT HERE THEN IT IS NOT FREE.
|
||||
JR NZ,SETPIOY ; SO EXIT INSIDE LOOP AND TRY NEXT INTERRUPT
|
||||
|
||||
XOR A ; WE MATCH INT 0 - IF WE ARE CHECKING FOR IT THEN
|
||||
OR C ; WE REGARD IS AS FREE.
|
||||
JR NZ,SETPIOZ
|
||||
|
||||
SETPIOY: ADD HL,DE
|
||||
DJNZ SETPIOX
|
||||
|
||||
JR SETPIOQ ; WE GET HERE IF THE CURRENT INTERRUPT
|
||||
; WAS NOT MATCHED SO IT IS FREE
|
||||
SETPIOZ: POP BC
|
||||
DJNZ SETPIOP
|
||||
POP AF
|
||||
|
||||
PRTS("[NONEFREE]$")
|
||||
RET
|
||||
|
||||
SETPIOQ:PUSH AF ; AVAILABLE INTERRUPT IS IN C
|
||||
PRTS("[FREE]=$")
|
||||
LD A,C
|
||||
CALL PRTHEXBYTE
|
||||
POP AF
|
||||
|
||||
POP AF
|
||||
POP AF
|
||||
|
||||
SETPIOR:LD HL,INT_ALLOC ; INCREASE THE COUNT
|
||||
INC (HL) ; OF USED INTERRUPTS
|
||||
LD A,(HL)
|
||||
|
||||
; LD A,(IY) ; IS THIS UNIT
|
||||
; INC A ; UNITIALIZED?
|
||||
; JR Z,SETPIO6
|
||||
|
||||
LD A,(IY+4) ; IT IS UNITIALIZED SO
|
||||
OR C ; SAVE THE ALLOCATES
|
||||
LD (IY+4),A ; INTERRUPT
|
||||
;
|
||||
; FOR THIS DEVICE AND INTERRUPT, UPDATE THE CONFIG TABLE FOR THIS DEVICE.
|
||||
; PIO_IN, PIO_OUT, PIO_IST, PIO_OST ENTRIES NEED TO BE REDIRECTED.
|
||||
; INTERRUPT VECTOR NEEDS TO BE UPDATED
|
||||
;
|
||||
LD A,(IY+0)
|
||||
LD HL,0
|
||||
; SETUP PIO INTERRUPT VECTOR IN IVT
|
||||
LD HL,HBX_IV09+1
|
||||
|
||||
; CALL SPK_BEEP
|
||||
;
|
||||
SETPIO6:RET
|
||||
|
||||
; EXIT WITH FREE INTERRUPT IN C
|
||||
|
||||
LD A,C
|
||||
LD (INT_ALLOC),A
|
||||
|
||||
LD A,E
|
||||
AND 11000000B
|
||||
OR 00000100B
|
||||
OR C
|
||||
LD E,A
|
||||
LD (IY+5),A
|
||||
;
|
||||
; TODO: DEALLOCATE AN INTERRUPT
|
||||
;
|
||||
; LD A,(INT_ALLOC)
|
||||
; DEC A
|
||||
; LD (INT_ALLOC),A
|
||||
;
|
||||
SETPIO2:
|
||||
|
||||
; DE CONTAINS THE MODE IF INTERRUPT ROUTINE SKIPPED
|
||||
|
||||
PRTS("[NOINTREQ]$") ;D
|
||||
|
||||
; LD A,(IY+4)
|
||||
LD A,E ; GET MODE AND CREATE COMMAND
|
||||
AND 11000000B ; $B0
|
||||
OR 00001111B ; $0F
|
||||
|
||||
LD C,(IY+3) ; GET DATA PORT
|
||||
INC C ; POINT TO CMD
|
||||
INC C ; PORT
|
||||
OUT (C),A ; SET MODE
|
||||
CP (M_BitCtrl | $0F) ; IF MODE 3
|
||||
JR NZ,SETPIO3
|
||||
LD A,(IY+5) ; SET I/O DIRECTION
|
||||
OUT (C),A ; FOR MODE 3
|
||||
|
||||
SETPIO3:; INTERUPT HANDLING
|
||||
|
||||
JP SETPIO4
|
||||
|
||||
; SETUP THE INTERRUPT VECTOR
|
||||
|
||||
LD A,E
|
||||
AND 00000011B
|
||||
; DEC A ; INDEX INTO THE
|
||||
ADD A,A ; THE VECTOR TABLE
|
||||
ADD A,A ;
|
||||
LD C,A
|
||||
LD B,0
|
||||
LD HL,HBX_IV09+1
|
||||
ADD HL,BC ; GET THE ADDRESS OF
|
||||
PUSH DE
|
||||
LD D,(HL) ; THAT INTERRUPT
|
||||
INC HL ; HANDLER
|
||||
LD E,(HL)
|
||||
LD HL,0 ;HBX_IVT+IVT_PIO0 ; POPULATE THE
|
||||
LD A,L ; GET LOW BYTE OF IVT ADDRESS
|
||||
ADD HL,BC ; INTERRUPT TABLE
|
||||
LD (HL),D ; WITH THE INTERRUPT
|
||||
INC HL ; HANDLER ADDRESS FOR
|
||||
LD (HL),E ; THIS UNIT
|
||||
POP DE
|
||||
LD HL,INT_ALLOC
|
||||
LD C,(HL)
|
||||
LD B,0
|
||||
LD HL,PRTTAB-1 ; SAVE THE DATA
|
||||
ADD HL,BC ; PORT FOR EACH INTERRUPT
|
||||
LD C,(IY+3)
|
||||
LD (HL),C
|
||||
|
||||
INC C ; POINT TO CMD PORT
|
||||
INC C
|
||||
DI ; SET THE VECTOR ADDRESS
|
||||
OUT (C),A
|
||||
|
||||
; LD A,10000011B ; ENABLE INTERRUPTS ON
|
||||
OUT (C),A ; THIS UNIT
|
||||
EI
|
||||
; JR GUD_SET
|
||||
;
|
||||
SETPIO4:LD A,00000111B ; $07
|
||||
OUT (C),A ; NO INTERRUPTS
|
||||
;
|
||||
; SUCCESSFULL SO SAVE DEVICE CONFIGURATION WORD (DCW)
|
||||
;
|
||||
GUD_SET:LD (IY+4),E ; LOW BYTE
|
||||
LD (IY+5),D ; HIGH BYTE
|
||||
;
|
||||
; UPDATE THE DEVICE TABLE WITH THE ADDRESSES FOR THE CORRECT ROUTINE.
|
||||
;
|
||||
LD A,E
|
||||
AND 00000111B
|
||||
LD HL,INTMATRIX ; POINT TO EITHER THE INTERRUPT
|
||||
JR NZ, USEIM
|
||||
LD HL,POLMATRIX ; MATRIX OR THE POLLED MATRIX
|
||||
USEIM: PUSH HL
|
||||
|
||||
PUSH IY ; CALCULATE THE DESTINATION
|
||||
POP HL ; ADDRESS IN THE PIO_CFG TABLE
|
||||
LD BC,8 ; FOR THE FOUR ADDESSES TO BE
|
||||
ADD HL,BC ; COPIED TO
|
||||
|
||||
; LD B,0 ; 00000000 CALCULATE THE SOURCE ADDRESS
|
||||
LD C,E ; XX?????? FROM THE MATRIX. EACH ENTRY
|
||||
SRL C ; 0XX????? IN THE MATRIX IS 8 BYTES SO
|
||||
SRL C ; 00XX???? SOURCE = MATRIX BASE + (8 * MODE)
|
||||
SRL C ; 000XX???
|
||||
POP DE ; LOAD THE MATRIX BASE
|
||||
; LD DE,POLMATRIX
|
||||
EX DE,HL
|
||||
ADD HL,BC ; HL = SOURCE
|
||||
|
||||
LD C,8 ; COPY 8 BYTES
|
||||
LDIR
|
||||
|
||||
; PUSH IY
|
||||
; POP DE
|
||||
; CALL DUMP_BUFFER
|
||||
|
||||
XOR A
|
||||
RET
|
||||
|
||||
PRTTAB: .DB 0
|
||||
.DB 0
|
||||
.DB 0
|
||||
.DB 0
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
; INPUT INTERRUPT VECTOR MACRO AND DEFINITION FOR FOUR PORTS
|
||||
;
|
||||
#DEFINE PIOMIVT(PIOIN,PIOIST,PIOPRT) \
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ; RETURN WITH ERROR IF THERE IS \
|
||||
#DEFCONT ; ALREADY A CHARACTER IN BUFFER \
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ; OTHERWISE CHANGE THE STATUS TO \
|
||||
#DEFCONT ; SHOW THERE IS ONE CHARACTER IN \
|
||||
#DEFCONT ; THE BUFFER AND READ IT IN AND \
|
||||
#DEFCONT ; AND STORE IT.RETURN GOOD STATUS.\
|
||||
#DEFCONT ;\
|
||||
#DEFCONT \ LD A,(_CIST)
|
||||
#DEFCONT \ OR A
|
||||
#DEFCONT \ JR NZ,_OVFL
|
||||
#DEFCONT \ LD A,(PIOPRT)
|
||||
#DEFCONT \ LD C,A
|
||||
#DEFCONT \ LD A,1
|
||||
#DEFCONT \ LD (_CIST),A
|
||||
#DEFCONT \ IN A,(C)
|
||||
#DEFCONT \ LD (_CICH),A
|
||||
#DEFCONT \ OR $FF
|
||||
#DEFCONT \ RET
|
||||
#DEFCONT \_OVFL:XOR A
|
||||
#DEFCONT \ RET
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ;\
|
||||
#DEFCONT \PIOIN:CALL PIOIST
|
||||
#DEFCONT \ JR Z,PIOIN
|
||||
#DEFCONT \ LD A,(_CICH)
|
||||
#DEFCONT \ LD E,A
|
||||
#DEFCONT \ XOR A
|
||||
#DEFCONT \ LD (_CIST),A
|
||||
#DEFCONT \ RET
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ; If THERE A CHARACTER \
|
||||
#DEFCONT ; AVAILABLE? RETURN NUMBER \
|
||||
#DEFCONT ; IN A - 0 OR 1 \
|
||||
#DEFCONT ;\
|
||||
#DEFCONT \PIOIST:LD A,(_CIST)
|
||||
#DEFCONT \ AND 00000001B
|
||||
#DEFCONT \ RET
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ; CIST : 01 = CHARACTER READY ELSE NOT READY \
|
||||
#DEFCONT ; CISH : CHARACTER STORED BY INTERRUPT \
|
||||
#DEFCONT ;\
|
||||
#DEFCONT \_CIST .DB 00
|
||||
#DEFCONT \_CICH .DB 00
|
||||
;
|
||||
PIOIVT0:.MODULE PIOIVT0
|
||||
PIOMIVT(PIO0IN,PI0_IST,PRTTAB+0)
|
||||
PIOIVT1:.MODULE PIOIVT1
|
||||
PIOMIVT(PIO1IN,PI1_IST,PRTTAB+1)
|
||||
PIOIVT2:.MODULE PIOIVT2
|
||||
PIOMIVT(PIO2IN,PI2_IST,PRTTAB+2)
|
||||
PIOIVT3:.MODULE PIOIVT3
|
||||
PIOMIVT(PIO3IN,PI3_IST,PRTTAB+3)
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
; OUTPUT INTERRUPT VECTOR MACRO AND DEFINITION FOR FOUR PORTS
|
||||
;
|
||||
; AN INTERRUPT IS GENERATED WHEN THE RECEIVING DEVICE CAN ACCEPT A CHARACTER
|
||||
;
|
||||
#DEFINE PIOMOVT(PIOOUT,PIOOST,PIOPRT) \
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ; RETURN IF WE ARE WAITING FOR A \
|
||||
#DEFCONT ; CHARACTER (COST = 00) \
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ; IF ZERO CHARACTERS READY
|
||||
#DEFCONT ; (COST = 01) CHANGE STATUS TO \
|
||||
#DEFCONT ; WAITING FOR CHARACTER (COST 00) \
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ; IF A CHARACTER IS READY THEN \
|
||||
#DEFCONT ; OUTPUT AND CHANGE STATUS TO \
|
||||
#DEFCONT ; ZERO CHARACTERS READY \
|
||||
#DEFCONT ;\
|
||||
#DEFCONT \ LD A,(_COST)
|
||||
#DEFCONT \ DEC A
|
||||
#DEFCONT \ RET M
|
||||
#DEFCONT \ JR Z,_WFC
|
||||
#DEFCONT \ LD A,(_COCH)
|
||||
#DEFCONT \ LD E,A
|
||||
#DEFCONT \_ONOW:LD A,(PIOPRT)
|
||||
#DEFCONT \ LD C,A
|
||||
#DEFCONT \ OUT (C),E
|
||||
#DEFCONT \ LD A,1
|
||||
#DEFCONT \_WFC: LD (_COST),A
|
||||
#DEFCONT \ RET
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ; WAIT FOR SPACE FOR THE CHARACTER\
|
||||
#DEFCONT ; IF WE ARE WAITING FOR A \
|
||||
#DEFCONT ; CHARACTRE THEN OUTPUT IT NOW \
|
||||
#DEFCONT ; OTHERWISE STORE IT UNTIL THE \
|
||||
#DEFCONT ; INTERRUPT CALLS FOR IT \
|
||||
#DEFCONT ;\
|
||||
#DEFCONT \PIOOUT:LD A,(_COST)
|
||||
#DEFCONT \ CP 2
|
||||
#DEFCONT \ JR C,_ONOW
|
||||
#DEFCONT \ LD A,E
|
||||
#DEFCONT \ LD (_COCH),A
|
||||
#DEFCONT \ LD A,2
|
||||
#DEFCONT \ LD (_COST),A
|
||||
#DEFCONT \ JR PIOOUT
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ; RETURN WITH NUMBER OF \
|
||||
#DEFCONT ; CHARACTERS AVAILABLE 0 or 1 \
|
||||
#DEFCONT ;\
|
||||
#DEFCONT \PIOOST:LD A,(_COST)
|
||||
#DEFCONT \ DEC A
|
||||
#DEFCONT \ DEC A
|
||||
#DEFCONT \ RET Z
|
||||
#DEFCONT \ LD A,1
|
||||
#DEFCONT \ RET
|
||||
#DEFCONT ;\
|
||||
#DEFCONT ; COST : 00 WAITING FOR CHARACTER\
|
||||
#DEFCONT ; 01 ZERO CHARACTERS READY\
|
||||
#DEFCONT ; 02 ONE CHARACTER READY \
|
||||
#DEFCONT ; COCH : CHARACTER TO OUTPUT \
|
||||
#DEFCONT ;\
|
||||
#DEFCONT \_COST .DB 01
|
||||
#DEFCONT \_COCH .DB 00
|
||||
;
|
||||
PIOOVT0:.MODULE PIOOVT0
|
||||
PIOMOVT(PIO0OUT,PI0_OST,PRTTAB+0)
|
||||
PIOOVT1:.MODULE PIOOVT1
|
||||
PIOMOVT(PIO1OUT,PI1_OST,PRTTAB+1)
|
||||
PIOOVT2:.MODULE PIOOVT2
|
||||
PIOMOVT(PIO2OUT,PI2_OST,PRTTAB+2)
|
||||
PIOOVT3:.MODULE PIOOVT3
|
||||
PIOMOVT(PIO3OUT,PI3_OST,PRTTAB+3)
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
; NON INTERRUPT OUTPUT ROUTINE - SHARED
|
||||
;
|
||||
; INPUT WILL ALWAYS RETURN ERROR, CHARACTER RETURNED IS UNDEFINED.
|
||||
; OUTPUT WILL ALWAYS RETURN SUCCESS
|
||||
; INPUT-STATUS WILL ALWAYS RETURN 0 CHARACTERS IN BUFFER.
|
||||
; OUTPUT-STATUS WILL ALWAYS RETURN 1 CHARACTER SPACE IN BUFFER.
|
||||
|
||||
PIOSHO_IN:
|
||||
LD A,1
|
||||
RET
|
||||
;
|
||||
PIOSHO_OUT:
|
||||
LD C,(IY+3)
|
||||
OUT (C),E
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
PIOSHO_IST: XOR A
|
||||
RET
|
||||
;
|
||||
PIOSH_OST:
|
||||
LD A,1
|
||||
RET
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
; NON INTERRUPT INPUT ROUTINE - SHARED
|
||||
;
|
||||
; INPUT WILL ALWAYS A CHARACTER AND SUCCESS.
|
||||
; OUTPUT WILL ALWAYS RETURN FAILURE
|
||||
; INPUT STATUS WILL ALWAYS RETURN 1 CHARACTER IN BUFFER.
|
||||
;OUTPUT-STATUS WILL ALWAYS RETURN 0 CHARACTER SPACE IN BUFFER.
|
||||
;
|
||||
PIOSHI_IN:
|
||||
LD C,(IY+3)
|
||||
IN A,(C)
|
||||
LD E,A
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
PIOSHI_OUT:
|
||||
LD A,1
|
||||
RET
|
||||
;
|
||||
PIOSH_IST:
|
||||
LD A,1
|
||||
RET
|
||||
;
|
||||
PIOSHI_OST:
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
; ON ENTRY IY POINTS TO THE DEVICE RECORD. GET AND RETURN THE CONFIGURATION WORD IN DE
|
||||
;
|
||||
PIO_QUERY:
|
||||
PPI_QUERY:
|
||||
LD E,(IY+4) ; FIRST CONFIG BYTE TO E
|
||||
LD D,(IY+5) ; SECOND CONFIG BYTE TO D
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
; ON ENTRY IY POINTS TO THE DEVICE RECORD. FOR CHARACTER DEVICES BIT 6 OF ATTRIBUTE
|
||||
; INDICATES PARALLEL PORT IF 1 SO WE SET IT. COMMON TO ALL PORTS
|
||||
;
|
||||
PIO_DEVICE:
|
||||
PPI_DEVICE:
|
||||
LD D,CIODEV_PIO ; D := DEVICE TYPE
|
||||
LD E,(IY) ; E := PHYSICAL UNIT
|
||||
LD C,$40 ; C := ATTRIBUTE
|
||||
LD H,0 ; H := 0, DRIVER HAS NO MODES
|
||||
LD L,(IY+3) ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
INTMATRIX:
|
||||
.DW PIO0IN, PIO0OUT, PI0_IST, PI0_OST
|
||||
.DW PIO1IN, PIO1OUT, PI1_IST, PI1_OST
|
||||
.DW PIO2IN, PIO2OUT, PI2_IST, PI2_OST
|
||||
.DW PIO3IN, PIO3OUT, PI3_IST, PI3_OST
|
||||
POLMATRIX:
|
||||
.DW PIOSHO_IN, PIOSHO_OUT, PIOSHO_IST, PIOSH_OST ; OUTPUT
|
||||
.DW PIOSHI_IN, PIOSHI_OUT, PIOSH_IST, PIOSHI_OST ; INPUT
|
||||
.DW 0,0,0,0 ; BIDIR
|
||||
.DW 0,0,0,0 ; BIT MODE
|
||||
|
||||
SET_8255:
|
||||
RET
|
||||
;
|
||||
SET_BYE:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
; ------------------------------------
|
||||
; i8255 FUNCTION TABLE ROUTINES
|
||||
;-------------------------------------
|
||||
|
||||
PPI_IN:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
PPI_OUT:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
PPI_IST:
|
||||
RET
|
||||
;
|
||||
PPI_OST:
|
||||
RET
|
||||
;
|
||||
; PIO_INITDEV - Configure device.
|
||||
; If DE = FFFF then extract the configuration information from the table of devices and program the device using those settings.
|
||||
; Otherwise use the configuration information in DE to program those settings and save them in the device table
|
||||
|
||||
PPI_INITDEV:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
PPI_INT:OR $FF ; NZ SET TO INDICATE INT HANDLED
|
||||
RET
|
||||
;
|
||||
PIO_PRTCFG:
|
||||
; ANNOUNCE PORT
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("PIO$") ; FORMATTING
|
||||
LD A,(IY) ; DEVICE NUM
|
||||
CALL PRTDECB ; PRINT DEVICE NUM
|
||||
PRTS(": IO=0x$") ; FORMATTING
|
||||
LD A,(IY+3) ; GET BASE PORT
|
||||
CALL PRTHEXBYTE ; PRINT BASE PORT
|
||||
;
|
||||
; PRINT THE PIO TYPE
|
||||
CALL PC_SPACE ; FORMATTING
|
||||
LD A,(IY+1) ; GET PIO TYPE BYTE
|
||||
LD DE,PIO_TYPE_STR ; POINT HL TO TYPE MAP TABLE
|
||||
CALL PRTIDXDEA
|
||||
|
||||
; ALL DONE IF NO PIO WAS DETECTED
|
||||
LD A,(IY+1) ; GET PIO TYPE BYTE
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; IF ZERO, NOT PRESENT
|
||||
;
|
||||
PRTS(" MODE=$") ; FORMATTING
|
||||
LD E,(IY+4) ; LOAD CONFIG
|
||||
LD D,(IY+5) ; ... WORD TO DE
|
||||
CALL PS_PRTPC0 ; PRINT CONFIG
|
||||
;
|
||||
LD A,(IY+4) ; PRINT
|
||||
BIT 2,A ; ALLOCATED
|
||||
JR Z,NOINT ; INTERRUPT
|
||||
PRTS("/i$")
|
||||
LD A,(IY+4)
|
||||
AND 00000011B
|
||||
CALL PRTDECB
|
||||
NOINT: XOR A
|
||||
RET
|
||||
;
|
||||
; WORKING VARIABLES
|
||||
;
|
||||
PIO_DEV .DB 0 ; DEVICE NUM USED DURING INIT
|
||||
;
|
||||
; DESCRIPTION OF DIFFERENT PORT TYPES
|
||||
;
|
||||
PIO_TYPE_STR:
|
||||
.TEXT "<NOT PRESENT>$" ; IDX 0
|
||||
.TEXT "Zilog PIO$" ; IDX 1
|
||||
.TEXT "i8255 PPI$" ; IDX 2
|
||||
.TEXT "IO Port$" ; IDX 3
|
||||
;
|
||||
; Z80 PIO PORT TABLE - EACH ENTRY IS FOR 1 CHIP I.E. TWO PORTS
|
||||
;
|
||||
; 32 BYTE DATA STRUCTURE FOR EACH PORT
|
||||
;
|
||||
; .DB 0 ; IY+0 CIO DEVICE NUMBER (SET DURING PRE-INIT, THEN FIXED)
|
||||
; .DB 0 ; IY+1 PIO TYPE (SET AT ASSEMBLY, FIXED)
|
||||
; .DB 0 ; IY+2 PIO CHANNEL (SET AT ASSEMBLY, FIXED)
|
||||
; .DB PIOBASE+2 ; IY+3 BASE DATA PORT (SET AT ASSEMBLY, FIXED)
|
||||
; .DB 0 ; IY+4 SPW - MODE 3 I/O DIRECTION BYTE (SET AT ASSEMBLE, SET WITH INIT)
|
||||
; .DB 0 ; IY+5 SPW - MODE, INTERRUPT (SET AT ASSEMBLY, SET WITH INIT)
|
||||
; .DW 0 ; IY+6/7 FUNCTION TABLE (SET AT ASSEMBLY, SET DURING PRE-INIT AND AT INIT)
|
||||
; .DW PIO_IN ; IY+8 ADDR FOR DEVICE INPUT (SET WITH INIT)
|
||||
; .DW PIO_OUT ; IY+10 ADDR FOR DEVICE OUTPUT (SET WITH INIT)
|
||||
; .DW PIO_IST ; IY+12 ADDR FOR DEVICE INPUT STATUS (SET WITH INIT)
|
||||
; .DW PIO_OST ; IY+14 ADDR FOR DEVICE OUTPUT STATUS (SET WITH INIT)
|
||||
; .DW PIO_INITDEV ; IY+16 ADDR FOR INITIALIZE DEVICE ROUTINE (SET AT ASSEMBLY, FIXED)
|
||||
; .DW PIO_QUERY ; IY+18 ADDR FOR QUERY DEVICE RECORD ROUTINE (SET AT ASSEMBLY, FIXED)
|
||||
; .DW PIO_DEVICE ; IY+20 ADDR FOR DEVICE TYPE ROUTINE (SET AT ASSEMBLY, FIXED)
|
||||
; .FILL 10
|
||||
;
|
||||
; SETUP PARAMETER WORD:
|
||||
;
|
||||
; +-------------------------------+ +-------+-----------+---+-------+
|
||||
; | BIT CONTROL | | MODE | | A | INT |
|
||||
; +-------------------------------+ --------------------+-----------+
|
||||
; F E D C B A 9 8 7 6 5 4 3 2 1 0
|
||||
; -- MSB (D REGISTER) -- -- LSB (E REGISTER) --
|
||||
;
|
||||
;
|
||||
; MSB = BIT CONTROL MAP USE IN MODE 3
|
||||
;
|
||||
; MODE B7 B6 = 00 Mode 0 Output
|
||||
; 01 Mode 1 Input
|
||||
; 10 Mode 2 Bidir
|
||||
; 11 Mode 3 Bit Mode
|
||||
;
|
||||
; INTERRUPT ALLOCATED B2 = 0 NOT ALLOCATED
|
||||
; = 1 IS ALLOCATED
|
||||
;
|
||||
; WHICH IVT IS ALLOCATES B1 B0 00 IVT_PIO0
|
||||
; 01 IVT_PIO1
|
||||
; 10 IVT_PIO2
|
||||
; 11 IVT_PIO3
|
||||
;
|
||||
#DEFINE DEFPIO(MPIOBASE,MPIOCH0,MPIOCH1,MPIOCH0X,MPIOCH1X,MPIOIN0,MPIOIN1) \
|
||||
#DEFCONT \ .DB 0
|
||||
#DEFCONT \ .DB PIO_ZPIO
|
||||
#DEFCONT \ .DB 0
|
||||
#DEFCONT \ .DB MPIOBASE
|
||||
#DEFCONT \ .DB (MPIOCH0|MPIOIN0)
|
||||
#DEFCONT \ .DB MPIOCH0X
|
||||
#DEFCONT \ .DW 0
|
||||
#DEFCONT \ .DW 0,0,0,0, PIO_INITDEV,PIO_QUERY,PIO_DEVICE
|
||||
#DEFCONT \ .FILL 2
|
||||
#DEFCONT \ .DB 0
|
||||
#DEFCONT \ .DB PIO_ZPIO
|
||||
#DEFCONT \ .DB 1
|
||||
#DEFCONT \ .DB MPIOBASE+1
|
||||
#DEFCONT \ .DB (MPIOCH1|MPIOIN1)
|
||||
#DEFCONT \ .DB MPIOCH1X
|
||||
#DEFCONT \ .DW 0
|
||||
#DEFCONT \ .DW 0,0,0,0, PIO_INITDEV,PIO_QUERY,PIO_DEVICE
|
||||
#DEFCONT \ .FILL 2
|
||||
;
|
||||
; i8255 PORT TABLE - EACH ENTRY IS FOR 1 CHIP I.E. THREE PORTS
|
||||
;
|
||||
#DEFINE DEFPPI(MPPIBASE,MPPICH1,MPPICH2,MPPICH3,MPPICH1X,MPPICH2X,MPPICH3X) \
|
||||
#DEFCONT \ .DB 0
|
||||
#DEFCONT \ .DB PIO_8255
|
||||
#DEFCONT \ .DB 0
|
||||
#DEFCONT \ .DB MPPIBASE
|
||||
#DEFCONT \ .DB (MPPICH1|00001000B)
|
||||
#DEFCONT \ .DB MPPICH1X
|
||||
#DEFCONT \ .DW 0
|
||||
#DEFCONT \ .DW PPI_IN,PPI_OUT,PPI_IST,PPI_OST,PPI_INITDEV,PPI_QUERY,PPI_DEVICE
|
||||
#DEFCONT \ .FILL 2
|
||||
#DEFCONT \ .DB 0
|
||||
#DEFCONT \ .DB PIO_8255
|
||||
#DEFCONT \ .DB 1
|
||||
#DEFCONT \ .DB MPPIBASE+2
|
||||
#DEFCONT \ .DB (MPPICH2|00010000B)
|
||||
#DEFCONT \ .DB MPPICH2X
|
||||
#DEFCONT \ .DW 0
|
||||
#DEFCONT \ .DW PPI_IN,PPI_OUT,PPI_IST,PPI_OST,PPI_INITDEV,PPI_QUERY,PPI_DEVICE
|
||||
#DEFCONT \ .FILL 2
|
||||
#DEFCONT \ .DB 0
|
||||
#DEFCONT \ .DB PIO_8255
|
||||
#DEFCONT \ .DB 2
|
||||
#DEFCONT \ .DB MPPIBASE+4
|
||||
#DEFCONT \ .DB (MPPICH3|00100000B)
|
||||
#DEFCONT \ .DB MPPICH3X
|
||||
#DEFCONT \ .DW 0
|
||||
#DEFCONT \ .DW PPI_IN,PPI_OUT,PPI_IST,PPI_OST,PPI_INITDEV,PPI_QUERY,PPI_DEVICE
|
||||
#DEFCONT \ .FILL 2
|
||||
;
|
||||
; HERE WE ACTUALLY DEFINE THE HARDWARE THAT THE HBIOS CAN ACCESS
|
||||
; THE INIT ROUTINES READ AND SET THE INITIAL MODES FROM THIS INFO
|
||||
;
|
||||
PIO_CFG:
|
||||
;
|
||||
#IF PIO_4P
|
||||
DEFPIO(PIO4BASE+0,M_Output,M_Input,M_BitAllOut,M_BitAllOut,INT_N,INT_N)
|
||||
DEFPIO(PIO4BASE+4,M_Input,M_Input,M_BitAllOut,M_BitAllOut,INT_N,INT_N)
|
||||
DEFPIO(PIO4BASE+8,M_Output,M_Output,M_BitAllOut,M_BitAllOut,INT_N,INT_N)
|
||||
DEFPIO(PIO4BASE+12,M_Output,M_Output,M_BitAllOut,M_Output,INT_N,INT_N)
|
||||
#ENDIF
|
||||
#IF PIO_ZP
|
||||
DEFPIO(PIOZBASE+0,M_Input,M_Input,M_BitAllOut,M_BitAllOut,INT_N,INT_N)
|
||||
DEFPIO(PIOZBASE+4,M_Output,M_Output,M_BitAllOut,M_BitAllOut,INT_N,INT_N)
|
||||
#ENDIF
|
||||
; PIO_SBC & (PLATFORM == PLT_SBC) & (PPIDEMODE != PPIDEMODE_SBC))
|
||||
|
||||
#IF PIO_SBC
|
||||
DEFPPI(PIOSBASE,M_Output,M_Output,M_Output,M_BitAllOut,M_BitAllOut,M_BitAllOut)
|
||||
#ENDIF
|
||||
;
|
||||
PIO_CNT .EQU ($ - PIO_CFG) / CFG_SIZ
|
||||
;
|
||||
;-------------------------------------------------------------------
|
||||
; WHEN WE GET HERE IY POINTS TO THE PIO_CFG TABLE WE ARE WORKING ON.
|
||||
; C IS THE UNIT NUMBER
|
||||
;-------------------------------------------------------------------
|
||||
;
|
||||
;PIO_INITUNIT:
|
||||
; LD A,C ; SET THE UNIT NUMBER
|
||||
; LD (IY),A
|
||||
;
|
||||
; LD DE,-1 ; LEAVE CONFIG ALONE
|
||||
; CALL PIO_INITDEV ; IMPLEMENT IT AND RETURN
|
||||
; XOR A ; SIGNAL SUCCESS
|
||||
; RET ; AND RETURN
|
||||
;
|
||||
PIO_INIT:
|
||||
; CALL SPK_BEEP
|
||||
LD B,PIO_CNT ; COUNT OF POSSIBLE PIO UNITS
|
||||
LD C,0 ; INDEX INTO PIO CONFIG TABLE
|
||||
PIO_INIT1:
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
|
||||
; LD A,C ; PHYSICAL UNIT TO A
|
||||
; RLCA ; MULTIPLY BY CFG TABLE ENTRY SIZE (32 BYTES)
|
||||
; RLCA ; ...
|
||||
; RLCA ; ... TO GET OFFSET INTO CFG TABLE
|
||||
; RLCA
|
||||
;; RLCA
|
||||
; LD HL,PIO_CFG ; POINT TO START OF CFG TABLE
|
||||
; PUSH AF
|
||||
; CALL ADDHLA ; HL := ENTRY ADDRESS
|
||||
; POP AF
|
||||
; CALL ADDHLA ; HL := ENTRY ADDRESS
|
||||
; PUSH HL ; COPY CFG DATA PTR
|
||||
; POP IY ; ... TO IY
|
||||
; POP IY ; ... TO IY
|
||||
|
||||
CALL IDXCFG
|
||||
|
||||
LD A,(IY+1) ; GET PIO TYPE
|
||||
OR A ; SET FLAGS
|
||||
CALL NZ,PIO_PRTCFG ; PRINT IF NOT ZERO
|
||||
|
||||
; PUSH DE
|
||||
; LD DE,$FFFF ; INITIALIZE DEVICE/CHANNEL
|
||||
; CALL PIO_INITDEV ; BASED ON DPW
|
||||
; POP DE
|
||||
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
INC C ; NEXT UNIT
|
||||
DJNZ PIO_INIT1 ; LOOP TILL DONE
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
;
|
||||
SET_PORT:
|
||||
; DEVICE TYPE IS I/O PORT SO JUST WRITE $00 TO IT
|
||||
LD C,(IY+3)
|
||||
OUT (C),A
|
||||
XOR A
|
||||
RET
|
||||
@@ -23,6 +23,7 @@ call BuildDisk.cmd nzcom hd wbw_hd512 ..\zsdos\zsys_wbw.sys || exit /b
|
||||
call BuildDisk.cmd cpm3 hd wbw_hd512 ..\cpm3\cpmldr.sys || exit /b
|
||||
call BuildDisk.cmd zpm3 hd wbw_hd512 ..\zpm3\zpmldr.sys || exit /b
|
||||
call BuildDisk.cmd ws4 hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd dos65 hd wbw_hd512 ..\zsdos\zsys_wbw.sys || exit /b
|
||||
|
||||
if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd512 || exit /b
|
||||
|
||||
|
||||
Binary file not shown.
@@ -16,7 +16,7 @@ HD512PREFIX =
|
||||
HD1024PREFIX = hd1024_prefix.dat
|
||||
|
||||
OBJECTS = $(FDIMGS)
|
||||
OBJECTS += $(HD512IMGS) hd512_combo.img $(HD512PREFIX)
|
||||
OBJECTS += $(HD512IMGS) hd512_dos65.img hd512_combo.img $(HD512PREFIX)
|
||||
OBJECTS += $(HD1024IMGS) hd1024_combo.img $(HD1024PREFIX)
|
||||
|
||||
OTHERS = blank144 blankhd512 blankhd1024
|
||||
@@ -71,7 +71,7 @@ blankhd1024:
|
||||
@sys= ; \
|
||||
case $@ in \
|
||||
(*cpm22*) sys=../CPM22/cpm_wbw.sys;; \
|
||||
(*zsdos* | *nzcom*) sys=../ZSDOS/zsys_wbw.sys;; \
|
||||
(*zsdos* | *nzcom* | *dos65*) sys=../ZSDOS/zsys_wbw.sys;; \
|
||||
(*cpm3*) sys=../CPM3/cpmldr.sys;; \
|
||||
(*zpm3*) sys=../ZPM3/zpmldr.sys;; \
|
||||
esac ; \
|
||||
|
||||
BIN
Source/Images/d_dos65/u0/alloc.co6
Normal file
BIN
Source/Images/d_dos65/u0/alloc.co6
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/asm.co6
Normal file
BIN
Source/Images/d_dos65/u0/asm.co6
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/assign.co6
Normal file
BIN
Source/Images/d_dos65/u0/assign.co6
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/bcompile.co6
Normal file
BIN
Source/Images/d_dos65/u0/bcompile.co6
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/compare.co6
Normal file
BIN
Source/Images/d_dos65/u0/compare.co6
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/copy.co6
Normal file
BIN
Source/Images/d_dos65/u0/copy.co6
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/cpm.co6
Normal file
BIN
Source/Images/d_dos65/u0/cpm.co6
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/dbasic.co6
Normal file
BIN
Source/Images/d_dos65/u0/dbasic.co6
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/debug.co6
Normal file
BIN
Source/Images/d_dos65/u0/debug.co6
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/dos65.com
Normal file
BIN
Source/Images/d_dos65/u0/dos65.com
Normal file
Binary file not shown.
321
Source/Images/d_dos65/u0/dos65.hex
Normal file
321
Source/Images/d_dos65/u0/dos65.hex
Normal file
@@ -0,0 +1,321 @@
|
||||
:203800004C21CED84820FCBB682000BCAD92CC4A4A4A4A8DF6BFAD43BFD03CA2FF9AD8A946
|
||||
:203820001120F0BB2069BCA93E20F0BBAD8BBEAC8CBE20F4BBA000AE43BFF0DFB944BFC956
|
||||
:20384000619009C97BB005295F9944BFC8CAD0EC8A9944BF8DE7BF20A4BD202BBC8DE8BFEE
|
||||
:2038600020A5BCD064ADE9BFF004A915D02EA900AA8DECBFA001BD1DBFF01AD9C3BFD00490
|
||||
:20388000E8C8D0F2E8BD1DBFD0FAE8EEECBFADECBFC907D0DFADECBF0A6DECBFAAE8BD96B4
|
||||
:2038A000BEBC97BE8DEABF8CEBBFAD8FBE48AD8EBE486CEABF2034BC20A5BCADC4BF38E953
|
||||
:2038C000200DE9BFD0034C1BB820E1BBACEDBFB944BFF00AC920F0062072BCC8D0F1A93FB9
|
||||
:2038E00020F0BB4C1BB820A5BC20ABBDA920CDC4BFD00FCDCCBFD00AA93FA00B99C3BF8875
|
||||
:20390000D0FA205FBC3058ADF6BF8DF5BF20E1BB206CBCA93A20F0BBADEEBF0A0A0A0A0A39
|
||||
:203920002960A8C8A201B92801297F2072BCC8E8E00CF00CE009D0EEA92E2072BC4C26B984
|
||||
:2039400020F8BBD0192097BC2010BC8DEEBF300ECEF5BFF0B220EEBB20EEBB4C10B960A009
|
||||
:20396000344CC0BD20A5BCD057209EBC20ABBD205FBC304F20E0BDACE7BFB944BFC920D062
|
||||
:203980003C20A5BCD037ADE9BFF012CDF2BFF00D38E901CDE8BFD025ADF2BFD020ADF2BF5A
|
||||
:2039A0008DE9BFA9008DD3BF20ABBD205FBC100920E0BD2097BC4C27BCA03ED0082034BC09
|
||||
:2039C0004CC9B8A0344CC0BDA900A0088DFCBF8CFDBF2005BED07A8DF1BF0DF1BFF07220F3
|
||||
:2039E000A5BCD06D20E0BD209EBC2005BEAEC4BFE020F00A8DFCBF8CFDBFC002905320F39C
|
||||
:203A0000BD20ABBD2014BC2097BC2023BC3045204ABC304418ADFDBF6DF1BF8DF1BFADFC6C
|
||||
:203A2000BFACFDBF8DF3BF8CF4BF20CACA2097BC201FBCD02718ADF3BFACF4BF6980900376
|
||||
:203A4000C8F005CCF1BFD0DC2097BC2008BC3010604CC9B8A001D00AA055D006A062D002A3
|
||||
:203A6000A00A4CC0BD20A5BCC90BD013A01820C0BD20EABB4820E1BB68295FC959D0D120AA
|
||||
:203A8000ABBD4C14BC20A5BCD0302047BC303220E1BB2059BCF00410203022A200BD2801AD
|
||||
:203AA000C91AF0152072BC20F8BBD008AEEFBFE810EB30DEA206200301604CC9B8A029D046
|
||||
:203AC00002A0344CC0BD20D5BD20A5BCD0EC20E0BD209EBC2005BEAEC4BFE020F00320D921
|
||||
:203AE000BD20F3BD2047BC30D8ADF3BFACF4BF202FBC2059BCD00620B7CA4CEFBA30BE4C6A
|
||||
:203B0000A4BD2005BEAEC4BFE020F0034C76BB4C72BBADC4BFC920D011ADE9BFF00938E9DE
|
||||
:203B2000018DE8BF2000BC4CB8B8ADCCBFC920F0034CD9BBA202BDE4BF9DCCBFCA10F720A7
|
||||
:203B400047BC10034CD6BB20D5BD202FBC2059BCD01E20B7CACD91BE9007CC92BE90EBB0F7
|
||||
:203B600007CC92BE90E4F0E220A4BD2059BCF06C306AA900A0088DCBBB8CCCBB2034BC2089
|
||||
:203B8000A5BCADE9BF8DC3BFA21020A7BCADE9BF8DD3BFA0008CE3BFA220BDC3BF9D070143
|
||||
:203BA000CA10F7E8B944BFF007C920F003C8D0F4A9008D2801B944BF9D2901F007E8C8EEBA
|
||||
:203BC0002801D0F120E1BB20A4BD200008ADE8BF2000BC4C1BB82034BC4CC9B8A04A4CC074
|
||||
:203BE000BDA90D20F0BBA90AD006A201D043A920A202D03DA20AD039A20BD035A20DD031B7
|
||||
:203C0000A20ED02DA20FD029A210D025A211D021A212D01D2097BCA213D016A214D012A219
|
||||
:203C200015D00EA216D00AA217D006A219D002A21A4C0301ADE9BFF01F38E901CDE8BFF0ED
|
||||
:203C400017ADE8BF4C00BC20ABBDA9008DE3BF2097BC2004BC8DEEBF602097BC4C1BBC20EE
|
||||
:203C600097BC200CBC8DEEBF6020E1BB202BBC1869418EEFBF8CF0BF20C1C8B01048AD9085
|
||||
:203C8000CC20F0BB68094020F0BBAD8FCC20F0BBACF0BFAEEFBF60AD94BEAC95BE60ADE933
|
||||
:203CA000BF8DF2BF60A2008A48A9008DE9BFACE7BF2072BD8CEDBFF00D290F48C8B944BF7B
|
||||
:203CC000C93AF00A6888ADE8BF9DC3BF1008688DE9BF9DC3BFC8A9088DECBF207FBDF01D96
|
||||
:203CE000E8C92AD007A93F9DC3BFD0049DC3BFC8CEECBFD0E6207FBDF011C8D0F8E8A92083
|
||||
:203D00009DC3BFCEECBFD0F5B944BF48A9038DECBF68C92ED023C8207FBDF01DE8C92AD030
|
||||
:203D200007A93F9DC3BFD0049DC3BFC8CEECBFD0E6207FBDF00EC8D0F8E8A9209DC3BFCE03
|
||||
:203D4000ECBFD0F5A9038DECBFE8A9009DC3BFCEECBFD0F58CE7BFA9008DECBF68A8A20B51
|
||||
:203D6000C8B9C3BFC93FD003EEECBFCAD0F2ADECBF60B944BFF007C920D003C8D0F460B974
|
||||
:203D800044BFF01CC9209019F016C93DF012C92EF00EC93AF00AC93BF006C93CF002C93E8A
|
||||
:203DA000604CC9B8A928A0014C2FBCA9008DC3BFADE9BFF01F38E901CDE8BFF0174C00BC6C
|
||||
:203DC0008CF0BF20E1BBACF0BFB9AFBEF0062072BCC8D0F560A900A0088DF3BF8CF4BF600B
|
||||
:203DE000A20FBDC3BFBCD3BF9DD3BF989DC3BFCA10F060A20FBDD3BF9DC3BFCA10F7ADF2E6
|
||||
:203E0000BF8DE9BF60A9098DF7BF20A5BCADE9BFD0678DF8BF8DF9BFA8B9C4BFC924D0061C
|
||||
:203E2000A90F8DF7BFC8C8B9C3BFC920F04E20A1CA900E20ABCAB041E906A20FECF7BFD0D4
|
||||
:203E400038290F48ADF8BF8DFABFADF9BF8DFBBFAEF7BF18ADF8BF6DFABF8DF8BFADF9BFA5
|
||||
:203E60006DFBBF8DF9BFB011CAD0E9686DF8BF8DF8BF90B2EEF9BFD0AD4CC9B8ADCCBFC98F
|
||||
:203E800020D0F6ADF8BFACF9BF604C42BF4CB4B84C03B84CC3BF4CE6B84CC8B94C65BA4CCC
|
||||
:203EA00085BA4C64B94C02BB4CC6BA4C12BBFF004E4F2053504143450043414E204E4F5461
|
||||
:203EC00020434C4F534500414C4C2046494C45532028592F4E293F00524541442045525235
|
||||
:203EE0004F52004E4F5420464F554E440046494C4520455849535453004C4F41442045529D
|
||||
:203F0000524F520043414E204E4F54204F50454E005752495445204552524F520044495265
|
||||
:203F20002000534156452000455241200054595045200052454E2000474F20004C4F4144DD
|
||||
:203F400020007F0000000000000000000000000000000000000000000000000000000000C2
|
||||
:203F6000000000000000000000000000000000000000000000000000000000000000000041
|
||||
:203F8000000000000000000000000000000000000000000000000000000000000000000021
|
||||
:203FA000000000000000000000000000000000000000000000000000000000000000000001
|
||||
:203FC0000000000000000000000000000000000000000000000000000000000000000000E1
|
||||
:203FE00000000000434F360000000000000000000000000008000009000000000008D88D7B
|
||||
:2040000098CB8DDCCB8C99CB8CDDCB8E9ACBE024B050BD54CBF008A9FF8D97CB20E9C2A90F
|
||||
:20402000008D9FCBAD9ACB0A6D9ACBAAE8BD76C0BC77C08DA0CB8CA1CBADE4CA48ADE3CA36
|
||||
:2040400048AD98CBAC99CB6CA0CB8D9BCB8C9CCBAD9FCBF00DA0009102ADA9CB8D98CB20C3
|
||||
:2040600004C32C97CB100820E9C2A9008D97CBAC9CCBAD9BCB604CEAC04CDBC24C19C94C91
|
||||
:204080006BCC4C68CC4C65CC4C8BC84C1FC14C2AC14CD0C84C85C94C9BC84C83CC4C32C3E1
|
||||
:2040A0004C04C34CAFC54CEAC54C0EC64C3AC14CA2C14C42C14CC7C14CB7C64C80C14C3225
|
||||
:2040C000C14C2EC14CF9C24C23C14C6DC54C36C14CE2C04CE6C04CFAC04C0EC14C18C14C7A
|
||||
:2040E00089CC8D95CB60AD95CB602C97CB100820E9C2A9008D97CB4C59CC2086CC8DC5CBA8
|
||||
:204100008CC6CB8EC7CB8A2980A8ADC5CB60ADC7CB297FA8ADC6CB60AD6CC3AC6DC360ADF8
|
||||
:20412000060160ADD4CBACD5CB608D060160ADAACB60ADABCB60ADACCB602012C3A90D4CAC
|
||||
:204140001BC62012C3208FC5ADB5CBCDB6CB9013C980F003A90160A20120F3C6C900D0F4A8
|
||||
:204160008DB5CB2084C7ADB0CB0DB1CBD003A902602066C620ACC4203DC8209EC5A90060AB
|
||||
:204180002012C3201AC8A90C2013C63014A900A0109102A90CA2102086C6A90C201BC610B1
|
||||
:2041A000EC602012C3201AC8A90C2013C63017A20020EAC7ACAFCBAD53CB91042043C8A9FA
|
||||
:2041C0000C201BC610E9602012C3201AC8208FC5ADB5CBC9809003A901602084C7A9008D5A
|
||||
:2041E000D9CBADB0CB0DB1CBF0034CAAC2A9028DD9CBAD91CB48C910F01AA8882CC0CB10B8
|
||||
:204200000188B1028DB0CBC8A9002CC0CB1002B1028DB1CBADB0CB8DA5CB8DA7CBADB1CB17
|
||||
:204220008DA6CB8DA8CBADA7CBCDCBCBD008ACA8CBCCCCCBF012EEA7CBD003EEA8CBADA5BC
|
||||
:20424000CB0DA6CBF018D00BADA5CB0DA6CBD003A8F030ADA5CBD003CEA6CBCEA5CBADA53D
|
||||
:20426000CBACA6CB2051C5D009ADA5CBACA6CB4C83C2ADA7CBACA8CB2051C5D0A9ADA7CB70
|
||||
:20428000ACA8CB8DB0CB8CB1CB0DB1CBD00468A90260ADB0CB2065C568A8ADB0CB9102AD35
|
||||
:2042A000B1CBC82CC0CB100291022066C620ACC42049C8AEB5CBECB6CB9005E88EB6CBCA60
|
||||
:2042C000E07FD011209EC5A20020F3C6C900D00AA9FF8DB5CB209EC5A90060208BC820C168
|
||||
:2042E000C89005482019C96860A207B502BCDCCB9DDCCB9402CA10F360A502A4038504842A
|
||||
:20430000054C7ACCAD98CBCDAACBF0EC8DAACB4C45C3A000B102F01938E90129078D98CBE4
|
||||
:20432000ADAACB8DA9CBB1028D9FCB9891022004C360A9028DAACB8DABCBA928A001850295
|
||||
:20434000840320F9C2ADAACBC908900F206CC8ADE6CAACE7CA20D0C84CEAC02071CC8D6C57
|
||||
:20436000C38C6DC30D6DC3F0E3A00DB9FFFF99CBCB8810F7ADD1CBA81869038DC4CBB98BB7
|
||||
:20438000CB8DC3CBADD2CB8DC1CBADD3CB4A6EC1CB4A6EC1CB8DC2CBA9008DC0CBADCCCBE2
|
||||
:2043A000F00588386EC0CBB988CB8DDACB38A91FF988CB8DDBCBAEAACBBD80CB2DABCBD0F4
|
||||
:2043C0000CBD80CB0DABCB8DABCB4CCEC360202EC8ADCBCB8DC8CBADCCCBA2034A6EC8CB59
|
||||
:2043E000CAD0F98DC9CBEEC8CBD003EEC9CBADD4CBACD5CB85068407A000A9009106E606B9
|
||||
:20440000D002E607ADC8CBD003CEC9CBCEC8CBADC8CB0DC9CBD0E3ADC1CB8DC8CBADC2CBE0
|
||||
:20442000AEC4CB4A6EC8CBCAD0F98DC9CBEEC8CBD003EEC9CB8EB0CB8EB1CBADB0CBACB1D2
|
||||
:20444000CB2065C5EEB0CBD003EEB1CBADC8CBD003CEC9CBCEC8CBADC8CB0DC9CBD0DC201E
|
||||
:204460007EC420DEC7A2012026C73011ACAFCBB104C9E5F0F0A20120EAC74C65C460206E04
|
||||
:20448000CCADCFCBACD0CB4C74CCADAECB8DB1CBADADCB4EB1CB6A4EB1CB6A8DB7CB8DB02E
|
||||
:2044A000CBADB1CB8DB8CBA9008DB2CBA2008ECACB8EA2CB8EA3CB8EA4CBADB0CBCDA2CB2A
|
||||
:2044C000ADB1CBEDA3CBADB2CBEDA4CB902118ADA2CB6DCDCB8DA2CBADA3CB6DCECB8DA39F
|
||||
:2044E000CB9003EEA4CBE8D0D1EECACB4CBAC4CAE0FFD003CECACB8A186DCFCBAAADCACBB7
|
||||
:204500006DD0CBA88A2074CC38ADA2CBEDCDCB8DA2CBADA3CBEDCECB8DA3CB38ADB0CBED47
|
||||
:20452000A2CBAAADB1CBEDA3CBA88A2089CC4C77CC488407A00346076A88D0FA186DD4CB07
|
||||
:204540008506A5076DD5CB8507682907AABD78CB602031C5310660E001F00A2031C549FF03
|
||||
:2045600031069106602031C51106910660AEAACBBD80CB0DACCB8DACCB60A900A07F187185
|
||||
:20458000048810FA60AEAACBBD80CB2DACCB60A020B1028DB5CBA00FB1028DB6CB60AEB543
|
||||
:2045A000CBE88AA0209102ADB6CBA00F9102602012C32011C63032A90C0DAFCBA8B104AA0A
|
||||
:2045C00098291FA88A9102980DAFCBA8C898291FD0EBA00CAD92CBD102F00B9102A980903C
|
||||
:2045E000010AA00F9102ADB9CB602012C32011C6301B2085C5D013A00CB10248980DAFCB93
|
||||
:20460000A868D1046E90CB2082C6ADB9CB602012C3A90D4820DEC7207EC4688DB3CBA200C4
|
||||
:204620008EB4CB2026C7303DAEB3CBACB4CBEEB4CBB102C00CD0138D92CB48980DAFCBA8D4
|
||||
:204640006851042DDBCBF017D0D4C93FF01148980DAFCBA868851CB104297FC51CD0BFCA67
|
||||
:20466000D0C9ADB9CB60AEC4CB0EB0CB2EB1CB2EB2CBCAD0F4ADC3CB2DB5CB0DB0CB8DB0BA
|
||||
:20468000CB60A920A2008DB3CBCEB3CB188A6DB3CBA8C00CF004C00FD0052C90CB100DB13F
|
||||
:2046A0000248ADB3CB0DAFCBA8689104CEB3CB10DB208AC44C43C82012C3201AC8A5024877
|
||||
:2046C000A50348ADE9CAACEACA85028403A9012013C6688503688502ADB9CB3015A00DA9CE
|
||||
:2046E000009102C8C021D0F9386E90CB2082C6ADB9CB608E9ECB20EDC5302AA00CB1021821
|
||||
:204700006901291FF01791022011C6100BAD9ECBD01320BAC64C1BC720B2C51003A90160C0
|
||||
:20472000208FC5A900608A48EEADCBD003EEAECBADD2CBCDADCBADD3CBEDAECBB00568AA83
|
||||
:204740004CDEC7ADADCB29038DB9CB0A0A0A0A0A8DAFCBF00568AA4C62C7208AC4203DC8BE
|
||||
:2047600068AAADB9CB602CD6CB30FACAD009207AC520C8C7910860207AC520C8C7D108F01E
|
||||
:20478000E44C6DC5AEC4CBADB5CB4ACAD0FC8DB0CB38A908EDC4CBAAA00CB1022DDACB4ADB
|
||||
:2047A0002ACAD0FC186DB0CB2CC0CB10010A1869108D91CBA8B1028DB0CBC8A9002CC0CB62
|
||||
:2047C0001002B1028DB1CB604818ADB7CB6DD7CB8508ADB8CB6DD8CB8509A0006860A9FFA2
|
||||
:2047E0008DADCB8DAECB8DB9CB6018ADAFCB6910A88CBECB8A48B1048DBFCBC8207EC80DEF
|
||||
:20480000BFCBF00A207EC8A8ADBFCB2057C568AAACBECBC898290FD0D8602085C5F01D2015
|
||||
:204820006CC8ADECCAACEDCA20D0C84CEAC0AEAACBBD80CB49FF2DACCB8DACCB60207DCCEC
|
||||
:204840004C4FC8A201A901D003ADD9CB2080CCC900F0E9206CC8ADEFCAACF0CA20D0C8207E
|
||||
:204860008BC8C90DF0034CEAC04C67CAADF2CAACF3CA20D0C8ADAACB1869414C19C9A90064
|
||||
:204880002CC0CB1005B1048CBECB60AD94CB48A9008D94CB68D003205FCC60AD94CBD02057
|
||||
:2048A000205CCCC900F019205FCCC913D00D205FCCC903D0034CEAC0A900608D94CBA9FF5D
|
||||
:2048C00060C90DF00AC90AF006C909F002C920608DD9C88CDAC8A000B9FFFFC924F00CC86E
|
||||
:2048E0008CBACB2019C9ACBACBD0ED602C95CB100A2CBCCB3005482065CC686020C1C8B00F
|
||||
:204900001848AD90CC2032C9A95E20ECC8680940202AC9AD8FCC4C32C9C909D00DA920208D
|
||||
:204920002AC9AD96CB2907D0F46048209BC86820ECC8482CBCCB30032062CC68EE96CBC91F
|
||||
:2049400020B026CD8ECCF021CE96CBCD8CCCD006CE96CB300F60C90DF00ACD93CCF005CD73
|
||||
:2049600094CCD005A9008D96CB60A90D202AC9A90A20ECC8AD93CBCD96CBF0EDAD8ECC207E
|
||||
:2049800032C94C74C9A900A00191028C9DCBAD96CB8D93CB208BC8AC9DCBC90DD0034C64E9
|
||||
:2049A000CAC908D05EC001F0EBB10248A00138B102E901910268CE9DCBC920B040C909D075
|
||||
:2049C00030386EBCCBAD96CB8DBDCB206AC92071CAAD96CB4838ADBDCBED96CB8DBDCB0E75
|
||||
:2049E000BCCB2091CACEBDCBD0F8688D96CB4C94C9AD8FCC208DCAAD90CC208DCA2091CA1E
|
||||
:204A00004C94C9C910D00BAD95CB49FF8D95CB4C94C9C918D00C206AC9AD8DCC2032C94CD1
|
||||
:204A200085C9C912D009206AC92071CA4C94C9C89102488C9DCBA0019818710291026820A7
|
||||
:204A4000FCC8AC9DCBB102C903D00BA001B102C901D0034CEAC0A001B10288D102B0034C8F
|
||||
:204A600094C9A90D4C2AC9A90D202AC9A90A4C2AC9AD9DCB8DBBCBA9014868CEBBCBD00182
|
||||
:204A800060A8C89848B10220FCC84C7ACAC9209019AD8CCC482032C9A9202032C9684C327B
|
||||
:204AA000C9C9309004C93A9001386020A1CA90FAC94190F5C94760ADF3BFACF4BF186980A1
|
||||
:204AC0008DF3BF9004C88CF4BF60ADF3BFACF4BF8DD9CA8CDACAA200BDFFFF9D2801E81063
|
||||
:204AE000F7604C49C04C42CB4C53CB4CF8CA4CFFCA4C32CB4CCBCBFF202D20522F4F242079
|
||||
:204B00002D2042414420534543544F520D0A3C5245543E20544F2049474E4F5245202D2DF4
|
||||
:204B2000203C4F544845523E20544F2041424F5254240D0A50454D204552524F52204F4E7A
|
||||
:204B40002024202D20494E56414C494420445249564524E5000000000000000000000100F9
|
||||
:204B600000010101010101010101010100000100000000000000000080402010080402012A
|
||||
:204B80000102040810204080000103070F1F3F7F000000000000000000000000000000001F
|
||||
:204BA0000000000000000000000000000000000000000000000000000000000000000000F5
|
||||
:204BC0000000000000000000000000000000000000000000000000000000000000000000D5
|
||||
:204BE0000000000048DA5AAA4A4A4A4A1820F8CB8A20F8CB7AFA6860290F0930C93A30031C
|
||||
:204C00001869074CB5CE48DA5AA90D20B5CEA90A20B5CE7AFA68605ADA48A000A2FF38E8F9
|
||||
:204C2000E964B0FB69642040CCA2FF38E8E90AB0FB690A2040CCAAA0012040CC68FA7A60D2
|
||||
:204C400048C000D0098AA8C000D0034C54CC8A093020B5CE68604CAECD4C21CE4CAFCE4CFD
|
||||
:204C6000B2CE4CB5CE4CB8CE4CB9CE4CBACE4C5ACE4C29CE4C5ECE4C66CE4CAACE4C6DCE72
|
||||
:204C80004C8BCEA901604CBBCE4CBCCE08010C005E18500C1E020D0A6438383838622E20A8
|
||||
:204CA000202E643838622E20202E64383838382E20202020644420202020206F6F6F6F6F6F
|
||||
:204CC0000D0A38382020603844202E3850202059382E2038382020205950202020643820A7
|
||||
:204CE0002020202038507E7E7E7E0D0A3838202020383820383820202020383820603862C3
|
||||
:204D00006F2E202020206438202020202064500D0A383820202038382038382020202038E7
|
||||
:204D200038202020605938622E206438383838622E205638383838622E0D0A0038382020B9
|
||||
:204D40002E384420603862202064382720646220202038442038382020603844202020209E
|
||||
:204D6000206038440D0A593838383844202020605938385020202060383838385920206031
|
||||
:204D80003838383850202038386F6F62590D0A11444F532F3635204F4E20544845204E487E
|
||||
:204DA000594F44594E4520332E30300D0A0078A2FF9AD8A996A0CC20BDCEA93CA0CD20BD13
|
||||
:204DC000CE2006CC2075D820AFD0201ED5207DD7546E5C5E6E54794020B9D7A9448530A98E
|
||||
:204DE000BF8531A94A852EA9CE852F2037CF20B9D8A2008E88DA8E89DABD1BCE9D0001E8E7
|
||||
:204E0000E006D0F5A928A00120AACEAD82DAA9022029CE205ACEA9024C03B84C59CC4CFE5D
|
||||
:204E2000BF78A2FF9AD84CEECD29078D82DAAD82DA0AAABD3ACEBC3BCE6012DA20DA2EDA73
|
||||
:204E40003CDA4ADA58DA66DA74DA00000100300030013002300330043006A900A000188D39
|
||||
:204E60008ADA8C8BDA608D8CDA8C8DDA60201BCF29F0C900D004202CD960C920D003A9FF8E
|
||||
:204E800060C930D0034C70D2A9FF60201BCF29F0C900D0042060D960C920D003A9FF60C94A
|
||||
:204EA00030D00420C4D260A9FF6085F484F5604C9DD04C8ED04C6FD0606060606085F084B7
|
||||
:204EC000F1A000B1F0C900F00720B5CEC84CC3CE6048AD8CDA2903182AAABDF2CE85EEE8ED
|
||||
:204EE000BDF2CE85EFA5F485ECA5F585ED2028CF686009E389E309E489E448AD8CDA290393
|
||||
:204F0000182AAABDF2CE85ECE8BDF2CE85EDA5F485EEA5F585EF2028CF6860DAAD82DA29DB
|
||||
:204F2000070AAABD4ACEFA605AA000B1EE91ECC898C980D0F67A602006CC48DA5AA200BD5B
|
||||
:204F400053CFE8C924F00620B5CE4C3FCF7AFA684C67CF4469736B20436F6E666967757221
|
||||
:204F60006174696F6E3A242006CCA20048DA5AA200BD85CFE8C924F00620B5CE4C71CF7A81
|
||||
:204F8000FA684C8ACF20202020248A4A18694120B5CEA93A20B5CEA93D20B5CE20B4CFA9D2
|
||||
:204FA0003A20B5CEE8BD4ACE2017CCE82006CCE010D0B960BD4ACE4829F0C900D01F48DA91
|
||||
:204FC0005AA200BDD7CFE8C924F00620B5CE4CC3CF7AFA684CDACF4D44244C67D0C910D074
|
||||
:204FE0002048DA5AA200BDFACFE8C924F00620B5CE4CE6CF7AFA684CFECF554E4B244C67C4
|
||||
:20500000D0C920D01F48DA5AA200BD1ED0E8C924F00620B5CE4C0AD07AFA684C21D04644E8
|
||||
:20502000244C67D0C930D02248DA5AA200BD41D0E8C924F00620B5CE4C2DD07AFA684C47CC
|
||||
:20504000D05050494445244C67D048DA5AA200BD63D0E8C924F00620B5CE4C4FD07AFA68A4
|
||||
:205060004C67D0554E4B2468290F2017CC606048AD6D032920C900F0F7688D680360AD6D00
|
||||
:20508000032901C900F004AD680360A90060AD6D032901C900F0F7AD6803297F60AD6D0371
|
||||
:2050A0002901C900F003A9FF60A9006000000048DA5AA200BDC8D0E8C924F00620B5CE4CCC
|
||||
:2050C000B4D07AFA684CD0D05050494445203A242006CC2062D2D03548DA5AA200BDF1D0AD
|
||||
:2050E000E8C924F00620B5CE4CDDD07AFA684CF8D020494F3D307824A90320E4CBA96020F4
|
||||
:20510000E4CB20F7D2209BD1B0034C36D148DA5AA200BD26D1E8C924F00620B5CE4C12D1F6
|
||||
:205120007AFA684C33D1204E4F542050524553454E54244C97D12006CC48DA5AA200BD52FA
|
||||
:20514000D1E8C924F00620B5CE4C3ED17AFA684C63D1205050494445303A20426C6F636B52
|
||||
:20516000733D24A90020DBD148DA5AA200BD81D1E8C924F00620B5CE4C6DD17AFA684C9207
|
||||
:20518000D1205050494445313A20426C6F636B733D24A90120DBD12006CC60A9008D600301
|
||||
:2051A0002022D3B034A90F20D4D48A2940C900F028A90A20D4D4E001D01FA90B20D4D4E0FB
|
||||
:2051C00001D016A90C20D4D4E000D00DA90D20D4D4E000D004184CDAD1386029010A0A0A8D
|
||||
:2051E0000A09E0AAA000A90E20F2D42022D3B048A90FA2EC20F2D4204AD3B03C207AD348BE
|
||||
:20520000DA5AA200BD18D2E8C924F00620B5CE4C04D27AFA684C1BD2307824AD84E320E488
|
||||
:20522000CBAD83E320E4CBAD82E320E4CBAD81E320E4CB2006CC186048DA5AA200BD51D298
|
||||
:20524000E8C924F00620B5CE4C3DD27AFA684C5DD24E4F542050524553454E54242006CCE6
|
||||
:2052600038602016D5A9008D6003AD6003C900602077D220D1CE602019D4AD90DACD95DAD1
|
||||
:20528000D013AD8FDACD94DAD00BAD8EDACD93DAD003A900602022D3B02720E6D3A90FA2B5
|
||||
:2052A0002020F2D4204AD3B018207AD3AD90DA8D95DAAD8EDA8D93DAAD8FDA8D94DAA9009A
|
||||
:2052C00060A9FF602077D220FACE2022D3B02520E6D3A90FA23020F2D4204AD3B01620AF10
|
||||
:2052E000D32022D3B00EA9FF8D95DA8D93DA8D94DAA90060A9FF60A9008D90DA8D8EDA8D3C
|
||||
:205300008FDAA9FF8D95DA8D93DA8D94DAA9808D6203A200CAE000D0FBA9008D6203200A94
|
||||
:20532000D660DA5A48A9008DADD08DAED0A90F20D4D48A2980F00EEEADD0D0F1EEAED0D0E4
|
||||
:20534000EC384C46D318687AFA60DA5A48A9008DADD08DAED0A90F20D4D48A2988C908F0BA
|
||||
:20536000142901C901F00AEEADD0D0E9EEAED0D0E4384C76D318687AFA60A2008EACD0A971
|
||||
:205380000820D4D48AAEACD09D09E3E8989D09E3E8E000D0E78EACD0A90820D4D48AAEAC11
|
||||
:2053A000D09D09E4E8989D09E4E8E000D0E760A2008EACD0BD0AE3A8BD09E3AAA90820F296
|
||||
:2053C000D4AEACD0E8E8E000D0E7A2008EACD0BD0AE4A8BD09E4AAA90820F2D4AEACD0E86C
|
||||
:2053E000E8E000D0E760201BCF29010A0A0A0A09E0AAA000A90E20F2D4AE8FDAA90D20F2C3
|
||||
:20540000D4AE8EDAA90C20F2D4AE90DAA90B20F2D4A201A90A20F2D460AD8ADA290F0A0A5C
|
||||
:205420000A0AAAAD8CDA4A4A290F8D90DA8A0D90DA8D90DAAD8ADA8D8EDAAD8BDA8D8FDAD2
|
||||
:20544000AD8FDA4A8D8FDAAD8EDA6A8D8EDAAD8FDA4A8D8FDAAD8EDA6A8D8EDAAD8FDA4A58
|
||||
:205460008D8FDAAD8EDA6A8D8EDAAD8FDA4A8D8FDAAD8EDA6A8D8EDAAD82DA29070AAAE823
|
||||
:20548000BD4ACE8D98DAA9008D97DA186E98DA6E97DA6E98DA6E97DABD4ACE186D97DA8DA3
|
||||
:2054A00097DA18AD97DA6D8EDA8D8EDAAD98DA6D8FDA8D8FDAAD82DA8D71D8AD8FDA8D729C
|
||||
:2054C000D8AD8EDA8D73D8AD90DA8D74D82090D620C5D660200ED58D620309408D620348FE
|
||||
:2054E000AE6003AC61036849408D6203A9008D6203602016D58E60038C61038D62030920A6
|
||||
:205500008D620349208D6203A9008D62036048A9928D6303686048A9808D6303686020DADF
|
||||
:20552000D548DA5AA200BD3AD5E8C924F00620B5CE4C26D57AFA684C40D544534B593A2421
|
||||
:205540002006CC48DA5AA200BD5CD5E8C924F00620B5CE4C48D57AFA684C63D520494F3D21
|
||||
:20556000307824A90320E4CBA96020E4CB48DA5AA200BD86D5E8C924F00620B5CE4C72D5D5
|
||||
:205580007AFA684C8DD5204D4F44453D2448DA5AA200BDA6D5E8C924F00620B5CE4C92D564
|
||||
:2055A0007AFA684CA9D54E4724AD68D8C9FFF02648DA5AA200BDC9D5E8C924F00620B5CEDA
|
||||
:2055C0004CB5D57AFA684CD6D5204E4F542050524553454E54242006CC60201FD6D02A202B
|
||||
:2055E00041D8A9068D620309808D6203297F8D6203200AD6A9A5A000205BD7A000206FD796
|
||||
:20560000C9A5D005A9FF8D68D8602053D8A92120DBD6A9DF20DBD6A200DAFACAD0FB6020A8
|
||||
:205620002AD8A9008D6003AD6003C90060AD68D8C9FFD0052014D7290F60AD68D8C9FFD0E4
|
||||
:2056400024202DD6F0F4A94020DBD62019D749C048293F8D66D8A200BD74D6CD66D8F00924
|
||||
:20566000E8E01CD0F368A9FF606825C08D66D88A0D66D8600D040C14030B13020A1201094C
|
||||
:205680001100081005151D1C1B1A191823222120A200BD71D84A4A4A4ADAAABD56D8FADA8F
|
||||
:2056A000488A0AAA689D69D8FABD71D8290FDAAABD56D8FADA488A0AAAE8689D69D8FAE80D
|
||||
:2056C000E004D0CE6048DA5AA200BD69D8DA7A205BD7E8E008D0F37AFA686048A9014CE435
|
||||
:2056E000D648A900202AD809068D620309188D62038D66D8688D6003AD66D829FD8D620387
|
||||
:20570000EA09028D620329E78D620329E68D62032053D860A9014C1BD7A9002041D809061B
|
||||
:205720008D620309188D6203297B8D62038D66D8AD600348AD66D809048D620329E78D62C2
|
||||
:205740000329E68D62032053D86860A99020DBD6A210A9FF20E1D6CAD0F8605A484818986B
|
||||
:205760006990A820DBD66849FF20E1D6687A6018986970A820DBD62019D749FF608E66D868
|
||||
:20578000BA6885146885159AAE66D8DA5A4818E6149002E615A000B114205BD7C8C008D094
|
||||
:2057A000F6687AFA8D66D81868690885149003681A48A51448AD66D8605ADA48A00F206F5F
|
||||
:2057C000D70920A920A00F205BD7A28FA0FF88D0FDCAD0FAA00F206FD729DFA9DFA00F20D2
|
||||
:2057E0005BD768FA7A605A48A00D206FD70920A00D205BD7687A605A48A00E206FD709203D
|
||||
:20580000A00E205BD7687A605A48A00D206FD729DFA00D205BD7687A605A48A00E206FD792
|
||||
:2058200029DFA00E205BD7687A6048AD67D8C982F00DA9828D63038D67D8A9068D620368AF
|
||||
:205840006048AD67D8C992F008A9928D63038D67D868604C41D83F065B4F666D7D077F670E
|
||||
:20586000777C395E797100000000000000000000000000000048DA5AA200BD8ED8E8C9249E
|
||||
:20588000F00620B5CE4C7AD87AFA684CB6D84D443A20554E4954533D322052414D4449534E
|
||||
:2058A0004B3D3235364B4220524F4D4449534B3D3338344B42242006CCA200BDC7D89D00E3
|
||||
:2058C00002E8E000D0F560488415A00084148A2980C900D0388A2940C900D00DA9808D7CF1
|
||||
:2058E000036809808D7803D00BA9008D780368297F8D7C03A200DA7AB1149D0004E8E000E0
|
||||
:20590000D0F4A9808D7C03A98E8D7803606809808D7803A200DA7ABD00049114E8E000D002
|
||||
:20592000F4A9808D7C03A98E8D7803602035D920C6D9A90060201BCF29010A0A0A0A0A0A39
|
||||
:20594000297FAA2083D9E000F00CEE8EDAEE8EDAEE8EDAEE8EDAAD8EDAAC90DA2000026098
|
||||
:20596000201BCF2901C900F003A9FF602035D92083D920ECD9AD8EDAAC90DAA28020000231
|
||||
:20598000A90060DAAD8CDA4A291F8D90DAAD8ADA29030A0A0A0A0A09800D90DA8D90DAAD75
|
||||
:2059A0008ADA4A4A8D8EDAAD82DA8D71D8A9008D72D8AD8EDA8D73D8AD90DA8D74D820900E
|
||||
:2059C000D620C5D6FA6048AD8CDA2901C900D007A90085EE4CDBD9A98085EEA90485EFA539
|
||||
:2059E000F485ECA5F585ED2028CF686048AD8CDA2901C900D007A90085EC4C01DAA9808543
|
||||
:205A0000ECA90485EDA5F485EEA5F585EF2028CF68607F004000000001FF0099DA0089E2E5
|
||||
:205A2000BF0040000000019B0097DB0089E2FF074000100002FF0195DC0089E2FF07400074
|
||||
:205A4000100002FF0193DD0089E2FF074000100002FF0191DE0089E2FF074000100002FFD0
|
||||
:205A6000018FDF0089E2FF074000100002FF018DE00089E2FF074000100002FF018BE10058
|
||||
:205A800089E202000000000000000000000000000000000000000000000000000000000099
|
||||
:205AA0000000000000000000000000000000000000000000000000000000000000000000E6
|
||||
:205AC0000000000000000000000000000000000000000000000000000000000000000000C6
|
||||
:205AE0000000000000000000000000000000000000000000000000000000000000000000A6
|
||||
:205B0000000000000000000000000000000000000000000000000000000000000000000085
|
||||
:205B2000000000000000000000000000000000000000000000000000000000000000000065
|
||||
:205B4000000000000000000000000000000000000000000000000000000000000000000045
|
||||
:205B6000000000000000000000000000000000000000000000000000000000000000000025
|
||||
:205B8000000000000000000000000000000000000000000000000000000000000000000005
|
||||
:205BA0000000000000000000000000000000000000000000000000000000000000000000E5
|
||||
:205BC0000000000000000000000000000000000000000000000000000000000000000000C5
|
||||
:205BE0000000000000000000000000000000000000000000000000000000000000000000A5
|
||||
:205C0000000000000000000000000000000000000000000000000000000000000000000084
|
||||
:205C2000000000000000000000000000000000000000000000000000000000000000000064
|
||||
:205C4000000000000000000000000000000000000000000000000000000000000000000044
|
||||
:205C6000000000000000000000000000000000000000000000000000000000000000000024
|
||||
:205C8000000000000000000000000000000000000000000000000000000000000000000004
|
||||
:205CA0000000000000000000000000000000000000000000000000000000000000000000E4
|
||||
:205CC0000000000000000000000000000000000000000000000000000000000000000000C4
|
||||
:205CE0000000000000000000000000000000000000000000000000000000000000000000A4
|
||||
:205D0000000000000000000000000000000000000000000000000000000000000000000083
|
||||
:205D2000000000000000000000000000000000000000000000000000000000000000000063
|
||||
:205D4000000000000000000000000000000000000000000000000000000000000000000043
|
||||
:205D6000000000000000000000000000000000000000000000000000000000000000000023
|
||||
:205D8000000000000000000000000000000000000000000000000000000000000000000003
|
||||
:205DA0000000000000000000000000000000000000000000000000000000000000000000E3
|
||||
:205DC0000000000000000000000000000000000000000000000000000000000000000000C3
|
||||
:205DE0000000000000000000000000000000000000000000000000000000000000000000A3
|
||||
:205E0000000000000000000000000000000000000000000000000000000000000000000082
|
||||
:205E2000000000000000000000000000000000000000000000000000000000000000000062
|
||||
:205E4000000000000000000000000000000000000000000000000000000000000000000042
|
||||
:205E6000000000000000000000000000000000000000000000000000000000000000000022
|
||||
:205E8000000000000000000000000000000000000000000000000000000000000000000002
|
||||
:205EA0000000000000000000000000000000000000000000000000000000000000000000E2
|
||||
:205EC0000000000000000000000000000000000000000000000000000000000000000000C2
|
||||
:205EE0000000000000000000000000000000000000000000000000000000000000000000A2
|
||||
:205F0000000000000000000000000000000000000000000000000000000000000000000081
|
||||
:205F2000000000000000000000000000000000000000000000000000000000000000000061
|
||||
:205F4000000000000000000000000000000000000000000000000000000000000000000041
|
||||
:205F6000000000000000000000000000000000000000000000000000000000000000000021
|
||||
:205F8000000000000000000000000000000000000000000000000000000000000000000001
|
||||
:205FA0000000000000000000000000000000000000000000000000000000000000000000E1
|
||||
:205FC0000000000000000000000000000000000000000000000000000000000000000000C1
|
||||
:205FE0000000000000000000000000000000000000000000000000000000000000000000A1
|
||||
:00000001FF
|
||||
361
Source/Images/d_dos65/u0/dos65.s19
Normal file
361
Source/Images/d_dos65/u0/dos65.s19
Normal file
@@ -0,0 +1,361 @@
|
||||
S123B7F3FD7F3ECD77DBFF0000000000004C21CED84820FCBB682000BCAD92CC4A4A4A4AB1
|
||||
S123B8138DF6BFAD43BFD03CA2FF9AD8A91120F0BB2069BCA93E20F0BBAD8BBEAC8CBE2079
|
||||
S123B833F4BBA000AE43BFF0DFB944BFC9619009C97BB005295F9944BFC8CAD0EC8A9944D2
|
||||
S123B853BF8DE7BF20A4BD202BBC8DE8BF20A5BCD064ADE9BFF004A915D02EA900AA8DEC9D
|
||||
S123B873BFA001BD1DBFF01AD9C3BFD004E8C8D0F2E8BD1DBFD0FAE8EEECBFADECBFC90719
|
||||
S123B893D0DFADECBF0A6DECBFAAE8BD96BEBC97BE8DEABF8CEBBFAD8FBE48AD8EBE486C59
|
||||
S123B8B3EABF2034BC20A5BCADC4BF38E9200DE9BFD0034C1BB820E1BBACEDBFB944BFF05F
|
||||
S123B8D30AC920F0062072BCC8D0F1A93F20F0BB4C1BB820A5BC20ABBDA920CDC4BFD00FBE
|
||||
S123B8F3CDCCBFD00AA93FA00B99C3BF88D0FA205FBC3058ADF6BF8DF5BF20E1BB206CBC95
|
||||
S123B913A93A20F0BBADEEBF0A0A0A0A0A2960A8C8A201B92801297F2072BCC8E8E00CF0D6
|
||||
S123B9330CE009D0EEA92E2072BC4C26B920F8BBD0192097BC2010BC8DEEBF300ECEF5BFD8
|
||||
S123B953F0B220EEBB20EEBB4C10B960A0344CC0BD20A5BCD057209EBC20ABBD205FBC3075
|
||||
S123B9734F20E0BDACE7BFB944BFC920D03C20A5BCD037ADE9BFF012CDF2BFF00D38E90125
|
||||
S123B993CDE8BFD025ADF2BFD020ADF2BF8DE9BFA9008DD3BF20ABBD205FBC100920E0BDE5
|
||||
S123B9B32097BC4C27BCA03ED0082034BC4CC9B8A0344CC0BDA900A0088DFCBF8CFDBF209D
|
||||
S123B9D305BED07A8DF1BF0DF1BFF07220A5BCD06D20E0BD209EBC2005BEAEC4BFE020F0EE
|
||||
S123B9F30A8DFCBF8CFDBFC002905320F3BD20ABBD2014BC2097BC2023BC3045204ABC306C
|
||||
S123BA134418ADFDBF6DF1BF8DF1BFADFCBFACFDBF8DF3BF8CF4BF20CACA2097BC201FBC80
|
||||
S123BA33D02718ADF3BFACF4BF69809003C8F005CCF1BFD0DC2097BC2008BC3010604CC9B5
|
||||
S123BA53B8A001D00AA055D006A062D002A00A4CC0BD20A5BCC90BD013A01820C0BD20EAF3
|
||||
S123BA73BB4820E1BB68295FC959D0D120ABBD4C14BC20A5BCD0302047BC303220E1BB20B7
|
||||
S123BA9359BCF00410203022A200BD2801C91AF0152072BC20F8BBD008AEEFBFE810EB302C
|
||||
S123BAB3DEA206200301604CC9B8A029D002A0344CC0BD20D5BD20A5BCD0EC20E0BD209EF6
|
||||
S123BAD3BC2005BEAEC4BFE020F00320D9BD20F3BD2047BC30D8ADF3BFACF4BF202FBC20F2
|
||||
S123BAF359BCD00620B7CA4CEFBA30BE4CA4BD2005BEAEC4BFE020F0034C76BB4C72BBAD69
|
||||
S123BB13C4BFC920D011ADE9BFF00938E9018DE8BF2000BC4CB8B8ADCCBFC920F0034CD94C
|
||||
S123BB33BBA202BDE4BF9DCCBFCA10F72047BC10034CD6BB20D5BD202FBC2059BCD01E2023
|
||||
S123BB53B7CACD91BE9007CC92BE90EBB007CC92BE90E4F0E220A4BD2059BCF06C306AA995
|
||||
S123BB7300A0088DCBBB8CCCBB2034BC20A5BCADE9BF8DC3BFA21020A7BCADE9BF8DD3BF42
|
||||
S123BB93A0008CE3BFA220BDC3BF9D0701CA10F7E8B944BFF007C920F003C8D0F4A9008D10
|
||||
S123BBB32801B944BF9D2901F007E8C8EE2801D0F120E1BB20A4BD200008ADE8BF2000BCAE
|
||||
S123BBD34C1BB82034BC4CC9B8A04A4CC0BDA90D20F0BBA90AD006A201D043A920A202D0A2
|
||||
S123BBF33DA20AD039A20BD035A20DD031A20ED02DA20FD029A210D025A211D021A212D0B4
|
||||
S123BC131D2097BCA213D016A214D012A215D00EA216D00AA217D006A219D002A21A4C03FC
|
||||
S123BC3301ADE9BFF01F38E901CDE8BFF017ADE8BF4C00BC20ABBDA9008DE3BF2097BC209C
|
||||
S123BC5304BC8DEEBF602097BC4C1BBC2097BC200CBC8DEEBF6020E1BB202BBC1869418ED5
|
||||
S123BC73EFBF8CF0BF20C1C8B01048AD90CC20F0BB68094020F0BBAD8FCC20F0BBACF0BF95
|
||||
S123BC93AEEFBF60AD94BEAC95BE60ADE9BF8DF2BF60A2008A48A9008DE9BFACE7BF20724A
|
||||
S123BCB3BD8CEDBFF00D290F48C8B944BFC93AF00A6888ADE8BF9DC3BF1008688DE9BF9DC5
|
||||
S123BCD3C3BFC8A9088DECBF207FBDF01DE8C92AD007A93F9DC3BFD0049DC3BFC8CEECBFC4
|
||||
S110BCF3D0E6207FBDF011C8D0F8E8A920EC
|
||||
S123BD009DC3BFCEECBFD0F5B944BF48A9038DECBF68C92ED023C8207FBDF01DE8C92AD0AC
|
||||
S123BD2007A93F9DC3BFD0049DC3BFC8CEECBFD0E6207FBDF00EC8D0F8E8A9209DC3BFCE7F
|
||||
S123BD40ECBFD0F5A9038DECBFE8A9009DC3BFCEECBFD0F58CE7BFA9008DECBF68A8A20BCD
|
||||
S123BD60C8B9C3BFC93FD003EEECBFCAD0F2ADECBF60B944BFF007C920D003C8D0F460B9F0
|
||||
S123BD8044BFF01CC9209019F016C93DF012C92EF00EC93AF00AC93BF006C93CF002C93E06
|
||||
S123BDA0604CC9B8A928A0014C2FBCA9008DC3BFADE9BFF01F38E901CDE8BFF0174C00BCE8
|
||||
S123BDC08CF0BF20E1BBACF0BFB9AFBEF0062072BCC8D0F560A900A0088DF3BF8CF4BF6087
|
||||
S123BDE0A20FBDC3BFBCD3BF9DD3BF989DC3BFCA10F060A20FBDD3BF9DC3BFCA10F7ADF262
|
||||
S123BE00BF8DE9BF60A9098DF7BF20A5BCADE9BFD0678DF8BF8DF9BFA8B9C4BFC924D00698
|
||||
S123BE20A90F8DF7BFC8C8B9C3BFC920F04E20A1CA900E20ABCAB041E906A20FECF7BFD050
|
||||
S123BE4038290F48ADF8BF8DFABFADF9BF8DFBBFAEF7BF18ADF8BF6DFABF8DF8BFADF9BF21
|
||||
S123BE606DFBBF8DF9BFB011CAD0E9686DF8BF8DF8BF90B2EEF9BFD0AD4CC9B8ADCCBFC90B
|
||||
S123BE8020D0F6ADF8BFACF9BF604C42BF4CB4B84C03B84CC3BF4CE6B84CC8B94C65BA4C48
|
||||
S123BEA085BA4C64B94C02BB4CC6BA4C12BBFF004E4F2053504143450043414E204E4F54DD
|
||||
S123BEC020434C4F534500414C4C2046494C45532028592F4E293F005245414420455252B1
|
||||
S123BEE04F52004E4F5420464F554E440046494C4520455849535453004C4F414420455219
|
||||
S123BF00524F520043414E204E4F54204F50454E005752495445204552524F5200444952E1
|
||||
S123BF202000534156452000455241200054595045200052454E2000474F20004C4F414459
|
||||
S123BF4020007F00000000000000000000000000000000000000000000000000000000003E
|
||||
S123BF600000000000000000000000000000000000000000000000000000000000000000BD
|
||||
S123BF8000000000000000000000000000000000000000000000000000000000000000009D
|
||||
S123BFA000000000000000000000000000000000000000000000000000000000000000007D
|
||||
S123BFC000000000000000000000000000000000000000000000000000000000000000005D
|
||||
S123BFE000000000434F360000000000000000000000000008000009000000000008D88DF7
|
||||
S123C00098CB8DDCCB8C99CB8CDDCB8E9ACBE024B050BD54CBF008A9FF8D97CB20E9C2A98B
|
||||
S123C020008D9FCBAD9ACB0A6D9ACBAAE8BD76C0BC77C08DA0CB8CA1CBADE4CA48ADE3CAB2
|
||||
S123C04048AD98CBAC99CB6CA0CB8D9BCB8C9CCBAD9FCBF00DA0009102ADA9CB8D98CB203F
|
||||
S123C06004C32C97CB100820E9C2A9008D97CBAC9CCBAD9BCB604CEAC04CDBC24C19C94C0D
|
||||
S123C0806BCC4C68CC4C65CC4C8BC84C1FC14C2AC14CD0C84C85C94C9BC84C83CC4C32C35D
|
||||
S123C0A04C04C34CAFC54CEAC54C0EC64C3AC14CA2C14C42C14CC7C14CB7C64C80C14C32A1
|
||||
S123C0C0C14C2EC14CF9C24C23C14C6DC54C36C14CE2C04CE6C04CFAC04C0EC14C18C14CF6
|
||||
S123C0E089CC8D95CB60AD95CB602C97CB100820E9C2A9008D97CB4C59CC2086CC8DC5CB24
|
||||
S123C1008CC6CB8EC7CB8A2980A8ADC5CB60ADC7CB297FA8ADC6CB60AD6CC3AC6DC360AD74
|
||||
S123C120060160ADD4CBACD5CB608D060160ADAACB60ADABCB60ADACCB602012C3A90D4C28
|
||||
S123C1401BC62012C3208FC5ADB5CBCDB6CB9013C980F003A90160A20120F3C6C900D0F424
|
||||
S123C1608DB5CB2084C7ADB0CB0DB1CBD003A902602066C620ACC4203DC8209EC5A9006027
|
||||
S123C1802012C3201AC8A90C2013C63014A900A0109102A90CA2102086C6A90C201BC6102D
|
||||
S123C1A0EC602012C3201AC8A90C2013C63017A20020EAC7ACAFCBAD53CB91042043C8A976
|
||||
S123C1C00C201BC610E9602012C3201AC8208FC5ADB5CBC9809003A901602084C7A9008DD6
|
||||
S123C1E0D9CBADB0CB0DB1CBF0034CAAC2A9028DD9CBAD91CB48C910F01AA8882CC0CB1034
|
||||
S123C2000188B1028DB0CBC8A9002CC0CB1002B1028DB1CBADB0CB8DA5CB8DA7CBADB1CB93
|
||||
S123C2208DA6CB8DA8CBADA7CBCDCBCBD008ACA8CBCCCCCBF012EEA7CBD003EEA8CBADA538
|
||||
S123C240CB0DA6CBF018D00BADA5CB0DA6CBD003A8F030ADA5CBD003CEA6CBCEA5CBADA5B9
|
||||
S123C260CBACA6CB2051C5D009ADA5CBACA6CB4C83C2ADA7CBACA8CB2051C5D0A9ADA7CBEC
|
||||
S123C280ACA8CB8DB0CB8CB1CB0DB1CBD00468A90260ADB0CB2065C568A8ADB0CB9102ADB1
|
||||
S123C2A0B1CBC82CC0CB100291022066C620ACC42049C8AEB5CBECB6CB9005E88EB6CBCADC
|
||||
S123C2C0E07FD011209EC5A20020F3C6C900D00AA9FF8DB5CB209EC5A90060208BC820C1E4
|
||||
S123C2E0C89005482019C96860A207B502BCDCCB9DDCCB9402CA10F360A502A403850484A6
|
||||
S123C300054C7ACCAD98CBCDAACBF0EC8DAACB4C45C3A000B102F01938E90129078D98CB60
|
||||
S123C320ADAACB8DA9CBB1028D9FCB9891022004C360A9028DAACB8DABCBA928A001850211
|
||||
S123C340840320F9C2ADAACBC908900F206CC8ADE6CAACE7CA20D0C84CEAC02071CC8D6CD3
|
||||
S123C360C38C6DC30D6DC3F0E3A00DB9FFFF99CBCB8810F7ADD1CBA81869038DC4CBB98B33
|
||||
S123C380CB8DC3CBADD2CB8DC1CBADD3CB4A6EC1CB4A6EC1CB8DC2CBA9008DC0CBADCCCB5E
|
||||
S123C3A0F00588386EC0CBB988CB8DDACB38A91FF988CB8DDBCBAEAACBBD80CB2DABCBD070
|
||||
S123C3C00CBD80CB0DABCB8DABCB4CCEC360202EC8ADCBCB8DC8CBADCCCBA2034A6EC8CBD5
|
||||
S123C3E0CAD0F98DC9CBEEC8CBD003EEC9CBADD4CBACD5CB85068407A000A9009106E60635
|
||||
S123C400D002E607ADC8CBD003CEC9CBCEC8CBADC8CB0DC9CBD0E3ADC1CB8DC8CBADC2CB5C
|
||||
S123C420AEC4CB4A6EC8CBCAD0F98DC9CBEEC8CBD003EEC9CB8EB0CB8EB1CBADB0CBACB14E
|
||||
S123C440CB2065C5EEB0CBD003EEB1CBADC8CBD003CEC9CBCEC8CBADC8CB0DC9CBD0DC209A
|
||||
S123C4607EC420DEC7A2012026C73011ACAFCBB104C9E5F0F0A20120EAC74C65C460206E80
|
||||
S123C480CCADCFCBACD0CB4C74CCADAECB8DB1CBADADCB4EB1CB6A4EB1CB6A8DB7CB8DB0AA
|
||||
S123C4A0CBADB1CB8DB8CBA9008DB2CBA2008ECACB8EA2CB8EA3CB8EA4CBADB0CBCDA2CBA6
|
||||
S123C4C0ADB1CBEDA3CBADB2CBEDA4CB902118ADA2CB6DCDCB8DA2CBADA3CB6DCECB8DA31B
|
||||
S123C4E0CB9003EEA4CBE8D0D1EECACB4CBAC4CAE0FFD003CECACB8A186DCFCBAAADCACB33
|
||||
S123C5006DD0CBA88A2074CC38ADA2CBEDCDCB8DA2CBADA3CBEDCECB8DA3CB38ADB0CBEDC3
|
||||
S123C520A2CBAAADB1CBEDA3CBA88A2089CC4C77CC488407A00346076A88D0FA186DD4CB83
|
||||
S123C5408506A5076DD5CB8507682907AABD78CB602031C5310660E001F00A2031C549FF7F
|
||||
S123C56031069106602031C51106910660AEAACBBD80CB0DACCB8DACCB60A900A07F187101
|
||||
S123C580048810FA60AEAACBBD80CB2DACCB60A020B1028DB5CBA00FB1028DB6CB60AEB5BF
|
||||
S123C5A0CBE88AA0209102ADB6CBA00F9102602012C32011C63032A90C0DAFCBA8B104AA86
|
||||
S123C5C098291FA88A9102980DAFCBA8C898291FD0EBA00CAD92CBD102F00B9102A98090B8
|
||||
S123C5E0010AA00F9102ADB9CB602012C32011C6301B2085C5D013A00CB10248980DAFCB0F
|
||||
S123C600A868D1046E90CB2082C6ADB9CB602012C3A90D4820DEC7207EC4688DB3CBA20040
|
||||
S123C6208EB4CB2026C7303DAEB3CBACB4CBEEB4CBB102C00CD0138D92CB48980DAFCBA850
|
||||
S123C6406851042DDBCBF017D0D4C93FF01148980DAFCBA868851CB104297FC51CD0BFCAE3
|
||||
S123C660D0C9ADB9CB60AEC4CB0EB0CB2EB1CB2EB2CBCAD0F4ADC3CB2DB5CB0DB0CB8DB036
|
||||
S123C680CB60A920A2008DB3CBCEB3CB188A6DB3CBA8C00CF004C00FD0052C90CB100DB1BB
|
||||
S123C6A00248ADB3CB0DAFCBA8689104CEB3CB10DB208AC44C43C82012C3201AC8A50248F3
|
||||
S123C6C0A50348ADE9CAACEACA85028403A9012013C6688503688502ADB9CB3015A00DA94A
|
||||
S123C6E0009102C8C021D0F9386E90CB2082C6ADB9CB608E9ECB20EDC5302AA00CB102189D
|
||||
S123C7006901291FF01791022011C6100BAD9ECBD01320BAC64C1BC720B2C51003A901603C
|
||||
S123C720208FC5A900608A48EEADCBD003EEAECBADD2CBCDADCBADD3CBEDAECBB00568AAFF
|
||||
S123C7404CDEC7ADADCB29038DB9CB0A0A0A0A0A8DAFCBF00568AA4C62C7208AC4203DC83A
|
||||
S123C76068AAADB9CB602CD6CB30FACAD009207AC520C8C7910860207AC520C8C7D108F09A
|
||||
S123C780E44C6DC5AEC4CBADB5CB4ACAD0FC8DB0CB38A908EDC4CBAAA00CB1022DDACB4A57
|
||||
S123C7A02ACAD0FC186DB0CB2CC0CB10010A1869108D91CBA8B1028DB0CBC8A9002CC0CBDE
|
||||
S123C7C01002B1028DB1CB604818ADB7CB6DD7CB8508ADB8CB6DD8CB8509A0006860A9FF1E
|
||||
S123C7E08DADCB8DAECB8DB9CB6018ADAFCB6910A88CBECB8A48B1048DBFCBC8207EC80D6B
|
||||
S123C800BFCBF00A207EC8A8ADBFCB2057C568AAACBECBC898290FD0D8602085C5F01D2091
|
||||
S123C8206CC8ADECCAACEDCA20D0C84CEAC0AEAACBBD80CB49FF2DACCB8DACCB60207DCC68
|
||||
S123C8404C4FC8A201A901D003ADD9CB2080CCC900F0E9206CC8ADEFCAACF0CA20D0C820FA
|
||||
S123C8608BC8C90DF0034CEAC04C67CAADF2CAACF3CA20D0C8ADAACB1869414C19C9A900E0
|
||||
S123C8802CC0CB1005B1048CBECB60AD94CB48A9008D94CB68D003205FCC60AD94CBD020D3
|
||||
S123C8A0205CCCC900F019205FCCC913D00D205FCCC903D0034CEAC0A900608D94CBA9FFD9
|
||||
S123C8C060C90DF00AC90AF006C909F002C920608DD9C88CDAC8A000B9FFFFC924F00CC8EA
|
||||
S123C8E08CBACB2019C9ACBACBD0ED602C95CB100A2CBCCB3005482065CC686020C1C8B08B
|
||||
S123C9001848AD90CC2032C9A95E20ECC8680940202AC9AD8FCC4C32C9C909D00DA9202009
|
||||
S123C9202AC9AD96CB2907D0F46048209BC86820ECC8482CBCCB30032062CC68EE96CBC99B
|
||||
S123C94020B026CD8ECCF021CE96CBCD8CCCD006CE96CB300F60C90DF00ACD93CCF005CDEF
|
||||
S123C96094CCD005A9008D96CB60A90D202AC9A90A20ECC8AD93CBCD96CBF0EDAD8ECC20FA
|
||||
S123C98032C94C74C9A900A00191028C9DCBAD96CB8D93CB208BC8AC9DCBC90DD0034C6465
|
||||
S123C9A0CAC908D05EC001F0EBB10248A00138B102E901910268CE9DCBC920B040C909D0F1
|
||||
S123C9C030386EBCCBAD96CB8DBDCB206AC92071CAAD96CB4838ADBDCBED96CB8DBDCB0EF1
|
||||
S123C9E0BCCB2091CACEBDCBD0F8688D96CB4C94C9AD8FCC208DCAAD90CC208DCA2091CA9A
|
||||
S123CA004C94C9C910D00BAD95CB49FF8D95CB4C94C9C918D00C206AC9AD8DCC2032C94C4D
|
||||
S123CA2085C9C912D009206AC92071CA4C94C9C89102488C9DCBA001981871029102682023
|
||||
S123CA40FCC8AC9DCBB102C903D00BA001B102C901D0034CEAC0A001B10288D102B0034C0B
|
||||
S123CA6094C9A90D4C2AC9A90D202AC9A90A4C2AC9AD9DCB8DBBCBA9014868CEBBCBD001FE
|
||||
S123CA8060A8C89848B10220FCC84C7ACAC9209019AD8CCC482032C9A9202032C9684C32F7
|
||||
S123CAA0C9C9309004C93A9001386020A1CA90FAC94190F5C94760ADF3BFACF4BF1869801D
|
||||
S123CAC08DF3BF9004C88CF4BF60ADF3BFACF4BF8DD9CA8CDACAA200BDFFFF9D2801E810DF
|
||||
S123CAE0F7604C49C04C42CB4C53CB4CF8CA4CFFCA4C32CB4CCBCBFF202D20522F4F2420F5
|
||||
S123CB002D2042414420534543544F520D0A3C5245543E20544F2049474E4F5245202D2D70
|
||||
S123CB20203C4F544845523E20544F2041424F5254240D0A50454D204552524F52204F4EF6
|
||||
S123CB402024202D20494E56414C494420445249564524E500000000000000000000010075
|
||||
S123CB600001010101010101010101010000010000000000000000008040201008040201A6
|
||||
S123CB800102040810204080000103070F1F3F7F000000000000000000000000000000009B
|
||||
S123CBA0000000000000000000000000000000000000000000000000000000000000000071
|
||||
S123CBC0000000000000000000000000000000000000000000000000000000000000000051
|
||||
S123CBE00000000048DA5AAA4A4A4A4A1820F8CB8A20F8CB7AFA6860290F0930C93A300398
|
||||
S123CC001869074CB5CE48DA5AA90D20B5CEA90A20B5CE7AFA68605ADA48A000A2FF38E875
|
||||
S123CC20E964B0FB69642040CCA2FF38E8E90AB0FB690A2040CCAAA0012040CC68FA7A604E
|
||||
S123CC4048C000D0098AA8C000D0034C54CC8A093020B5CE68604CAECD4C21CE4CAFCE4C79
|
||||
S123CC60B2CE4CB5CE4CB8CE4CB9CE4CBACE4C5ACE4C29CE4C5ECE4C66CE4CAACE4C6DCEEE
|
||||
S123CC804C8BCEA901604CBBCE4CBCCE08010C005E18500C1E020D0A6438383838622E2024
|
||||
S123CCA0202E643838622E20202E64383838382E20202020644420202020206F6F6F6F6FEB
|
||||
S123CCC00D0A38382020603844202E3850202059382E203838202020595020202064382023
|
||||
S123CCE02020202038507E7E7E7E0D0A38382020203838203838202020203838206038623F
|
||||
S123CD006F2E202020206438202020202064500D0A38382020203838203838202020203863
|
||||
S123CD2038202020605938622E206438383838622E205638383838622E0D0A003838202035
|
||||
S123CD402E384420603862202064382720646220202038442038382020603844202020201A
|
||||
S123CD60206038440D0A5938383838442020206059383850202020603838383859202060AD
|
||||
S123CD803838383850202038386F6F62590D0A11444F532F3635204F4E20544845204E48FA
|
||||
S123CDA0594F44594E4520332E30300D0A0078A2FF9AD8A996A0CC20BDCEA93CA0CD20BD8F
|
||||
S123CDC0CE2006CC2075D820AFD0201ED5207DD7546E5C5E6E54794020B9D7A9448530A90A
|
||||
S123CDE0BF8531A94A852EA9CE852F2037CF20B9D8A2008E88DA8E89DABD1BCE9D0001E863
|
||||
S123CE00E006D0F5A928A00120AACEAD82DAA9022029CE205ACEA9024C03B84C59CC4CFED9
|
||||
S123CE20BF78A2FF9AD84CEECD29078D82DAAD82DA0AAABD3ACEBC3BCE6012DA20DA2EDAEF
|
||||
S123CE403CDA4ADA58DA66DA74DA00000100300030013002300330043006A900A000188DB5
|
||||
S123CE608ADA8C8BDA608D8CDA8C8DDA60201BCF29F0C900D004202CD960C920D003A9FF0A
|
||||
S123CE8060C930D0034C70D2A9FF60201BCF29F0C900D0042060D960C920D003A9FF60C9C6
|
||||
S123CEA030D00420C4D260A9FF6085F484F5604C9DD04C8ED04C6FD0606060606085F08433
|
||||
S123CEC0F1A000B1F0C900F00720B5CEC84CC3CE6048AD8CDA2903182AAABDF2CE85EEE869
|
||||
S123CEE0BDF2CE85EFA5F485ECA5F585ED2028CF686009E389E309E489E448AD8CDA29030F
|
||||
S123CF00182AAABDF2CE85ECE8BDF2CE85EDA5F485EEA5F585EF2028CF6860DAAD82DA2957
|
||||
S123CF20070AAABD4ACEFA605AA000B1EE91ECC898C980D0F67A602006CC48DA5AA200BDD7
|
||||
S123CF4053CFE8C924F00620B5CE4C3FCF7AFA684C67CF4469736B20436F6E66696775729D
|
||||
S123CF606174696F6E3A242006CCA20048DA5AA200BD85CFE8C924F00620B5CE4C71CF7AFD
|
||||
S123CF80FA684C8ACF20202020248A4A18694120B5CEA93A20B5CEA93D20B5CE20B4CFA94E
|
||||
S123CFA03A20B5CEE8BD4ACE2017CCE82006CCE010D0B960BD4ACE4829F0C900D01F48DA0D
|
||||
S123CFC05AA200BDD7CFE8C924F00620B5CE4CC3CF7AFA684CDACF4D44244C67D0C910D0F0
|
||||
S123CFE02048DA5AA200BDFACFE8C924F00620B5CE4CE6CF7AFA684CFECF554E4B244C6740
|
||||
S123D000D0C920D01F48DA5AA200BD1ED0E8C924F00620B5CE4C0AD07AFA684C21D0464464
|
||||
S123D020244C67D0C930D02248DA5AA200BD41D0E8C924F00620B5CE4C2DD07AFA684C4748
|
||||
S123D040D05050494445244C67D048DA5AA200BD63D0E8C924F00620B5CE4C4FD07AFA6820
|
||||
S123D0604C67D0554E4B2468290F2017CC606048AD6D032920C900F0F7688D680360AD6D7C
|
||||
S123D080032901C900F004AD680360A90060AD6D032901C900F0F7AD6803297F60AD6D03ED
|
||||
S123D0A02901C900F003A9FF60A9006000000048DA5AA200BDC8D0E8C924F00620B5CE4C48
|
||||
S123D0C0B4D07AFA684CD0D05050494445203A242006CC2062D2D03548DA5AA200BDF1D029
|
||||
S123D0E0E8C924F00620B5CE4CDDD07AFA684CF8D020494F3D307824A90320E4CBA9602070
|
||||
S123D100E4CB20F7D2209BD1B0034C36D148DA5AA200BD26D1E8C924F00620B5CE4C12D172
|
||||
S123D1207AFA684C33D1204E4F542050524553454E54244C97D12006CC48DA5AA200BD5276
|
||||
S123D140D1E8C924F00620B5CE4C3ED17AFA684C63D1205050494445303A20426C6F636BCE
|
||||
S123D160733D24A90020DBD148DA5AA200BD81D1E8C924F00620B5CE4C6DD17AFA684C9283
|
||||
S123D180D1205050494445313A20426C6F636B733D24A90120DBD12006CC60A9008D60037D
|
||||
S123D1A02022D3B034A90F20D4D48A2940C900F028A90A20D4D4E001D01FA90B20D4D4E077
|
||||
S123D1C001D016A90C20D4D4E000D00DA90D20D4D4E000D004184CDAD1386029010A0A0A09
|
||||
S123D1E00A09E0AAA000A90E20F2D42022D3B048A90FA2EC20F2D4204AD3B03C207AD3483A
|
||||
S123D200DA5AA200BD18D2E8C924F00620B5CE4C04D27AFA684C1BD2307824AD84E320E404
|
||||
S123D220CBAD83E320E4CBAD82E320E4CBAD81E320E4CB2006CC186048DA5AA200BD51D214
|
||||
S123D240E8C924F00620B5CE4C3DD27AFA684C5DD24E4F542050524553454E54242006CC62
|
||||
S123D26038602016D5A9008D6003AD6003C900602077D220D1CE602019D4AD90DACD95DA4D
|
||||
S123D280D013AD8FDACD94DAD00BAD8EDACD93DAD003A900602022D3B02720E6D3A90FA231
|
||||
S123D2A02020F2D4204AD3B018207AD3AD90DA8D95DAAD8EDA8D93DAAD8FDA8D94DAA90016
|
||||
S123D2C060A9FF602077D220FACE2022D3B02520E6D3A90FA23020F2D4204AD3B01620AF8C
|
||||
S123D2E0D32022D3B00EA9FF8D95DA8D93DA8D94DAA90060A9FF60A9008D90DA8D8EDA8DB8
|
||||
S123D3008FDAA9FF8D95DA8D93DA8D94DAA9808D6203A200CAE000D0FBA9008D6203200A10
|
||||
S123D320D660DA5A48A9008DADD08DAED0A90F20D4D48A2980F00EEEADD0D0F1EEAED0D060
|
||||
S123D340EC384C46D318687AFA60DA5A48A9008DADD08DAED0A90F20D4D48A2988C908F036
|
||||
S123D360142901C901F00AEEADD0D0E9EEAED0D0E4384C76D318687AFA60A2008EACD0A9ED
|
||||
S123D3800820D4D48AAEACD09D09E3E8989D09E3E8E000D0E78EACD0A90820D4D48AAEAC8D
|
||||
S123D3A0D09D09E4E8989D09E4E8E000D0E760A2008EACD0BD0AE3A8BD09E3AAA90820F212
|
||||
S123D3C0D4AEACD0E8E8E000D0E7A2008EACD0BD0AE4A8BD09E4AAA90820F2D4AEACD0E8E8
|
||||
S123D3E0E8E000D0E760201BCF29010A0A0A0A09E0AAA000A90E20F2D4AE8FDAA90D20F23F
|
||||
S123D400D4AE8EDAA90C20F2D4AE90DAA90B20F2D4A201A90A20F2D460AD8ADA290F0A0AD8
|
||||
S123D4200A0AAAAD8CDA4A4A290F8D90DA8A0D90DA8D90DAAD8ADA8D8EDAAD8BDA8D8FDA4E
|
||||
S123D440AD8FDA4A8D8FDAAD8EDA6A8D8EDAAD8FDA4A8D8FDAAD8EDA6A8D8EDAAD8FDA4AD4
|
||||
S123D4608D8FDAAD8EDA6A8D8EDAAD8FDA4A8D8FDAAD8EDA6A8D8EDAAD82DA29070AAAE89F
|
||||
S123D480BD4ACE8D98DAA9008D97DA186E98DA6E97DA6E98DA6E97DABD4ACE186D97DA8D1F
|
||||
S123D4A097DA18AD97DA6D8EDA8D8EDAAD98DA6D8FDA8D8FDAAD82DA8D71D8AD8FDA8D7218
|
||||
S123D4C0D8AD8EDA8D73D8AD90DA8D74D82090D620C5D660200ED58D620309408D6203487A
|
||||
S123D4E0AE6003AC61036849408D6203A9008D6203602016D58E60038C61038D6203092022
|
||||
S123D5008D620349208D6203A9008D62036048A9928D6303686048A9808D6303686020DA5B
|
||||
S123D520D548DA5AA200BD3AD5E8C924F00620B5CE4C26D57AFA684C40D544534B593A249D
|
||||
S123D5402006CC48DA5AA200BD5CD5E8C924F00620B5CE4C48D57AFA684C63D520494F3D9D
|
||||
S123D560307824A90320E4CBA96020E4CB48DA5AA200BD86D5E8C924F00620B5CE4C72D551
|
||||
S123D5807AFA684C8DD5204D4F44453D2448DA5AA200BDA6D5E8C924F00620B5CE4C92D5E0
|
||||
S123D5A07AFA684CA9D54E4724AD68D8C9FFF02648DA5AA200BDC9D5E8C924F00620B5CE56
|
||||
S123D5C04CB5D57AFA684CD6D5204E4F542050524553454E54242006CC60201FD6D02A20A7
|
||||
S123D5E041D8A9068D620309808D6203297F8D6203200AD6A9A5A000205BD7A000206FD712
|
||||
S123D600C9A5D005A9FF8D68D8602053D8A92120DBD6A9DF20DBD6A200DAFACAD0FB602024
|
||||
S123D6202AD8A9008D6003AD6003C90060AD68D8C9FFD0052014D7290F60AD68D8C9FFD060
|
||||
S123D64024202DD6F0F4A94020DBD62019D749C048293F8D66D8A200BD74D6CD66D8F009A0
|
||||
S123D660E8E01CD0F368A9FF606825C08D66D88A0D66D8600D040C14030B13020A120109C8
|
||||
S123D6801100081005151D1C1B1A191823222120A200BD71D84A4A4A4ADAAABD56D8FADA0B
|
||||
S123D6A0488A0AAA689D69D8FABD71D8290FDAAABD56D8FADA488A0AAAE8689D69D8FAE889
|
||||
S123D6C0E004D0CE6048DA5AA200BD69D8DA7A205BD7E8E008D0F37AFA686048A9014CE4B1
|
||||
S123D6E0D648A900202AD809068D620309188D62038D66D8688D6003AD66D829FD8D620303
|
||||
S123D700EA09028D620329E78D620329E68D62032053D860A9014C1BD7A9002041D8090697
|
||||
S123D7208D620309188D6203297B8D62038D66D8AD600348AD66D809048D620329E78D623E
|
||||
S123D7400329E68D62032053D86860A99020DBD6A210A9FF20E1D6CAD0F8605A48481898E7
|
||||
S123D7606990A820DBD66849FF20E1D6687A6018986970A820DBD62019D749FF608E66D8E4
|
||||
S123D780BA6885146885159AAE66D8DA5A4818E6149002E615A000B114205BD7C8C008D010
|
||||
S123D7A0F6687AFA8D66D81868690885149003681A48A51448AD66D8605ADA48A00F206FDB
|
||||
S123D7C0D70920A920A00F205BD7A28FA0FF88D0FDCAD0FAA00F206FD729DFA9DFA00F204E
|
||||
S123D7E05BD768FA7A605A48A00D206FD70920A00D205BD7687A605A48A00E206FD70920B9
|
||||
S123D800A00E205BD7687A605A48A00D206FD729DFA00D205BD7687A605A48A00E206FD70E
|
||||
S123D82029DFA00E205BD7687A6048AD67D8C982F00DA9828D63038D67D8A9068D6203682B
|
||||
S123D8406048AD67D8C992F008A9928D63038D67D868604C41D83F065B4F666D7D077F678A
|
||||
S123D860777C395E797100000000000000000000000000000048DA5AA200BD8ED8E8C9241A
|
||||
S123D880F00620B5CE4C7AD87AFA684CB6D84D443A20554E4954533D322052414D444953CA
|
||||
S123D8A04B3D3235364B4220524F4D4449534B3D3338344B42242006CCA200BDC7D89D005F
|
||||
S123D8C002E8E000D0F560488415A00084148A2980C900D0388A2940C900D00DA9808D7C6D
|
||||
S123D8E0036809808D7803D00BA9008D780368297F8D7C03A200DA7AB1149D0004E8E0005C
|
||||
S123D900D0F4A9808D7C03A98E8D7803606809808D7803A200DA7ABD00049114E8E000D07E
|
||||
S123D920F4A9808D7C03A98E8D7803602035D920C6D9A90060201BCF29010A0A0A0A0A0AB5
|
||||
S123D940297FAA2083D9E000F00CEE8EDAEE8EDAEE8EDAEE8EDAAD8EDAAC90DA2000026014
|
||||
S123D960201BCF2901C900F003A9FF602035D92083D920ECD9AD8EDAAC90DAA280200002AD
|
||||
S123D980A90060DAAD8CDA4A291F8D90DAAD8ADA29030A0A0A0A0A09800D90DA8D90DAADF1
|
||||
S123D9A08ADA4A4A8D8EDAAD82DA8D71D8A9008D72D8AD8EDA8D73D8AD90DA8D74D820908A
|
||||
S123D9C0D620C5D6FA6048AD8CDA2901C900D007A90085EE4CDBD9A98085EEA90485EFA5B5
|
||||
S123D9E0F485ECA5F585ED2028CF686048AD8CDA2901C900D007A90085EC4C01DAA98085BF
|
||||
S123DA00ECA90485EDA5F485EEA5F585EF2028CF68607F004000000001FF0099DA0089E261
|
||||
S123DA20BF0040000000019B0097DB0089E2FF074000100002FF0195DC0089E2FF074000F0
|
||||
S123DA40100002FF0193DD0089E2FF074000100002FF0191DE0089E2FF074000100002FF4C
|
||||
S123DA60018FDF0089E2FF074000100002FF018DE00089E2FF074000100002FF018BE100D4
|
||||
S123DA8089E202000000000000000000000000000000000000000000000000000000000015
|
||||
S123DAA0000000000000000000000000000000000000000000000000000000000000000062
|
||||
S123DAC0000000000000000000000000000000000000000000000000000000000000000042
|
||||
S123DAE0000000000000000000000000000000000000000000000000000000000000000022
|
||||
S123DB00000000000000000000000000000000000000000000000000000000000000000001
|
||||
S123DB200000000000000000000000000000000000000000000000000000000000000000E1
|
||||
S123DB400000000000000000000000000000000000000000000000000000000000000000C1
|
||||
S123DB600000000000000000000000000000000000000000000000000000000000000000A1
|
||||
S123DB80000000000000000000000000000000000000000000000000000000000000000081
|
||||
S123DBA0000000000000000000000000000000000000000000000000000000000000000061
|
||||
S123DBC0000000000000000000000000000000000000000000000000000000000000000041
|
||||
S123DBE0000000000000000000000000000000000000000000000000000000000000000021
|
||||
S123DC00000000000000000000000000000000000000000000000000000000000000000000
|
||||
S123DC200000000000000000000000000000000000000000000000000000000000000000E0
|
||||
S123DC400000000000000000000000000000000000000000000000000000000000000000C0
|
||||
S123DC600000000000000000000000000000000000000000000000000000000000000000A0
|
||||
S123DC80000000000000000000000000000000000000000000000000000000000000000080
|
||||
S123DCA0000000000000000000000000000000000000000000000000000000000000000060
|
||||
S123DCC0000000000000000000000000000000000000000000000000000000000000000040
|
||||
S123DCE0000000000000000000000000000000000000000000000000000000000000000020
|
||||
S123DD000000000000000000000000000000000000000000000000000000000000000000FF
|
||||
S123DD200000000000000000000000000000000000000000000000000000000000000000DF
|
||||
S123DD400000000000000000000000000000000000000000000000000000000000000000BF
|
||||
S123DD6000000000000000000000000000000000000000000000000000000000000000009F
|
||||
S123DD8000000000000000000000000000000000000000000000000000000000000000007F
|
||||
S123DDA000000000000000000000000000000000000000000000000000000000000000005F
|
||||
S123DDC000000000000000000000000000000000000000000000000000000000000000003F
|
||||
S123DDE000000000000000000000000000000000000000000000000000000000000000001F
|
||||
S123DE000000000000000000000000000000000000000000000000000000000000000000FE
|
||||
S123DE200000000000000000000000000000000000000000000000000000000000000000DE
|
||||
S123DE400000000000000000000000000000000000000000000000000000000000000000BE
|
||||
S123DE6000000000000000000000000000000000000000000000000000000000000000009E
|
||||
S123DE8000000000000000000000000000000000000000000000000000000000000000007E
|
||||
S123DEA000000000000000000000000000000000000000000000000000000000000000005E
|
||||
S123DEC000000000000000000000000000000000000000000000000000000000000000003E
|
||||
S123DEE000000000000000000000000000000000000000000000000000000000000000001E
|
||||
S123DF000000000000000000000000000000000000000000000000000000000000000000FD
|
||||
S123DF200000000000000000000000000000000000000000000000000000000000000000DD
|
||||
S123DF400000000000000000000000000000000000000000000000000000000000000000BD
|
||||
S123DF6000000000000000000000000000000000000000000000000000000000000000009D
|
||||
S123DF8000000000000000000000000000000000000000000000000000000000000000007D
|
||||
S123DFA000000000000000000000000000000000000000000000000000000000000000005D
|
||||
S123DFC000000000000000000000000000000000000000000000000000000000000000003D
|
||||
S123DFE000000000000000000000000000000000000000000000000000000000000000001D
|
||||
S123E0000000000000000000000000000000000000000000000000000000000000000000FC
|
||||
S123E0200000000000000000000000000000000000000000000000000000000000000000DC
|
||||
S123E0400000000000000000000000000000000000000000000000000000000000000000BC
|
||||
S123E06000000000000000000000000000000000000000000000000000000000000000009C
|
||||
S123E08000000000000000000000000000000000000000000000000000000000000000007C
|
||||
S123E0A000000000000000000000000000000000000000000000000000000000000000005C
|
||||
S123E0C000000000000000000000000000000000000000000000000000000000000000003C
|
||||
S123E0E000000000000000000000000000000000000000000000000000000000000000001C
|
||||
S123E1000000000000000000000000000000000000000000000000000000000000000000FB
|
||||
S123E1200000000000000000000000000000000000000000000000000000000000000000DB
|
||||
S123E1400000000000000000000000000000000000000000000000000000000000000000BB
|
||||
S123E16000000000000000000000000000000000000000000000000000000000000000009B
|
||||
S123E18000000000000000000000000000000000000000000000000000000000000000007B
|
||||
S123E1A000000000000000000000000000000000000000000000000000000000000000005B
|
||||
S123E1C000000000000000000000000000000000000000000000000000000000000000003B
|
||||
S123E1E000000000000000000000000000000000000000000000000000000000000000001B
|
||||
S123E2000000000000000000000000000000000000000000000000000000000000000000FA
|
||||
S123E2200000000000000000000000000000000000000000000000000000000000000000DA
|
||||
S123E2400000000000000000000000000000000000000000000000000000000000000000BA
|
||||
S123E26000000000000000000000000000000000000000000000000000000000000000009A
|
||||
S123E28000000000000000000000000000000000000000000000000000000000000000007A
|
||||
S123E2A000000000000000000000000000000000000000000000000000000000000000005A
|
||||
S123E2C000000000000000000000000000000000000000000000000000000000000000003A
|
||||
S123E2E000000000000000000000000000000000000000000000000000000000000000001A
|
||||
S123E3000000000000000000000000000000000000000000000000000000000000000000F9
|
||||
S123E3200000000000000000000000000000000000000000000000000000000000000000D9
|
||||
S123E3400000000000000000000000000000000000000000000000000000000000000000B9
|
||||
S123E360000000000000000000000000000000000000000000000000000000000000000099
|
||||
S123E380000000000000000000000000000000000000000000000000000000000000000079
|
||||
S123E3A0000000000000000000000000000000000000000000000000000000000000000059
|
||||
S123E3C0000000000000000000000000000000000000000000000000000000000000000039
|
||||
S123E3E0000000000000000000000000000000000000000000000000000000000000000019
|
||||
S123E4000000000000000000000000000000000000000000000000000000000000000000F8
|
||||
S123E4200000000000000000000000000000000000000000000000000000000000000000D8
|
||||
S123E4400000000000000000000000000000000000000000000000000000000000000000B8
|
||||
S123E460000000000000000000000000000000000000000000000000000000000000000098
|
||||
S123E480000000000000000000000000000000000000000000000000000000000000000078
|
||||
S123E4A0000000000000000000000000000000000000000000000000000000000000000058
|
||||
S123E4C0000000000000000000000000000000000000000000000000000000000000000038
|
||||
S123E4E0000000000000000000000000000000000000000000000000000000000000000018
|
||||
BIN
Source/Images/d_dos65/u0/edit.co6
Normal file
BIN
Source/Images/d_dos65/u0/edit.co6
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/run.co6
Normal file
BIN
Source/Images/d_dos65/u0/run.co6
Normal file
Binary file not shown.
BIN
Source/Images/d_dos65/u0/sedit.co6
Normal file
BIN
Source/Images/d_dos65/u0/sedit.co6
Normal file
Binary file not shown.
3
Source/Images/hd_dos65.txt
Normal file
3
Source/Images/hd_dos65.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
#
|
||||
# Nothing to add for now
|
||||
#
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 1
|
||||
#DEFINE RUP 1
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.1.1-pre.159"
|
||||
#DEFINE BIOSVER "3.1.1-pre.160"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 1
|
||||
rup equ 1
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.1.1-pre.159"
|
||||
db "3.1.1-pre.160"
|
||||
endm
|
||||
|
||||
@@ -97,10 +97,10 @@ CPM=$(TOOLS)/cpm/bin80/
|
||||
%.rel: %.z80
|
||||
$(ZXCC) $(CPM)/Z80ASM -$(basename $<)/MF
|
||||
|
||||
%.hex: %.z80
|
||||
$(ZXCC) $(CPM)/Z80ASM -$(basename $<)/HF
|
||||
#%.hex: %.z80
|
||||
# $(ZXCC) $(CPM)/Z80ASM -$(basename $<)/HF
|
||||
|
||||
%.hex: %.180
|
||||
%.hex: %.z80
|
||||
$(ZXCC) $(CPM)/SLR180 -$(basename $<)/HF
|
||||
|
||||
%.rel: %.azm
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,21 +0,0 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
::
|
||||
:: Edit WATCOM variable below as needed for your environment
|
||||
::
|
||||
set WATCOM=..\..\Tools\WATCOM2
|
||||
|
||||
set PATH=%WATCOM%\BINNT;%WATCOM%\BINW;%PATH%
|
||||
set EDPATH=%WATCOM%\EDDAT
|
||||
set INCLUDE=%WATCOM%\H;%WATCOM%\H\NT
|
||||
|
||||
copy config.h.windows config.h
|
||||
|
||||
cl /Fe"zxcc.exe" zxcc.c cpmdrv.c cpmglob.c cpmparse.c cpmredir.c drdos.c util.c track.c xlt.c zxbdos.c zxcbdos.c zxdbdos.c z80.c
|
||||
if errorlevel 1 exit /b 255
|
||||
|
||||
cl /Fe"zxccdbg.exe" /DDEBUG zxcc.c cpmdrv.c cpmglob.c cpmparse.c cpmredir.c drdos.c util.c track.c xlt.c zxbdos.c zxcbdos.c zxdbdos.c z80.c
|
||||
if errorlevel 1 exit /b 255
|
||||
|
||||
copy cpm\bios.bin .
|
||||
@@ -1,25 +0,0 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
::
|
||||
:: Visual Studio x86 Native Tools Command Prompt is assumed
|
||||
::
|
||||
|
||||
:: Below configures VS2012 to target Windows XP.
|
||||
:: Not sure if it will work in later versions of VS, but seems
|
||||
:: to do no harm.
|
||||
set INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%
|
||||
set PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%
|
||||
set LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%
|
||||
set CL=/D_USING_V110_SDK71_;%CL%
|
||||
set LINK=/SUBSYSTEM:CONSOLE,5.01 %LINK%
|
||||
|
||||
copy config.h.windows config.h
|
||||
|
||||
cl -I. zxcc.c cpmdrv.c cpmglob.c cpmparse.c cpmredir.c drdos.c util.c xlt.c zxbdos.c zxcbdos.c zxdbdos.c z80.c dirent.c track.c
|
||||
if errorlevel 1 exit /b 255
|
||||
|
||||
cl -I. /DDEBUG /Fe"zxccdbg.exe" zxcc.c cpmdrv.c cpmglob.c cpmparse.c cpmredir.c drdos.c util.c xlt.c zxbdos.c zxcbdos.c zxdbdos.c z80.c dirent.c track.c
|
||||
if errorlevel 1 exit /b 255
|
||||
|
||||
copy cpm\bios.bin .
|
||||
@@ -1,11 +0,0 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
if exist *.exe del *.exe
|
||||
if exist *.obj del *.obj
|
||||
if exist *.err del *.err
|
||||
if exist *.o del *.o
|
||||
if exist *.bin del *.bin
|
||||
if exist zxcc del zxcc
|
||||
if exist zxccdbg del zxccdbg
|
||||
if exist config.h del config.h
|
||||
@@ -84,3 +84,10 @@ January 9, 2022
|
||||
|
||||
--WBW 9:34 AM 2/10/2022
|
||||
|
||||
- Added a call to trackFile in fcb_close. I think it was always
|
||||
supposed to be there. Was not causing any real problems other
|
||||
than superfluous attempts by releaseFile to close files that
|
||||
were already closed.
|
||||
|
||||
--WBW 3:58 PM 3/2/2022
|
||||
|
||||
|
||||
@@ -204,6 +204,8 @@ cpm_word fcb_close(cpm_byte* fcb)
|
||||
}
|
||||
#endif
|
||||
|
||||
trackFile(NULL, fcb, handle);
|
||||
|
||||
FCBRET(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -97,6 +97,8 @@
|
||||
|
||||
#ifdef FILETRACKER
|
||||
|
||||
#include "cpmint.h"
|
||||
|
||||
typedef struct _track {
|
||||
struct _track* next;
|
||||
int handle;
|
||||
@@ -115,10 +117,21 @@ static track_t* rmHandle(track_t* s) {
|
||||
|
||||
void releaseFile(char* fname) {
|
||||
track_t* s = (track_t*)&openFiles;
|
||||
DBGMSGV("releaseFile: \"%s\"\n", fname);
|
||||
while (s->next)
|
||||
if (strcmp(s->next->fname, fname) == 0) {
|
||||
close(s->next->handle);
|
||||
Msg("releaseFile closed file \"%s\"\n", s->next->fname);
|
||||
DBGMSGV(" closing file #%i: \"%s\"\n", s->next->handle, s->next->fname);
|
||||
#ifdef _WIN32
|
||||
{
|
||||
BOOL b;
|
||||
b = CloseHandle((HANDLE)s->next->handle);
|
||||
if (!b)
|
||||
DBGMSGV(" failed to close file #%i (Error=%lu): %s\n", s->next->handle, GetLastError(), GetErrorStr(GetLastError()));
|
||||
}
|
||||
#else
|
||||
if (close(s->next->handle))
|
||||
DBGMSGV(" failed to close file #%i (errno=%lu): %s\n", s->next->handle, errno, strerror(errno));
|
||||
#endif
|
||||
s->next = rmHandle(s->next);
|
||||
}
|
||||
else
|
||||
@@ -127,14 +140,24 @@ void releaseFile(char* fname) {
|
||||
|
||||
int trackFile(char* fname, void* fcb, int fd) {
|
||||
track_t* s = (track_t*)&openFiles;
|
||||
Msg("trackFile: \"%s\", FCB=0x%X, Handle=%i\n", fname, (byte*)fcb - RAM, fd);
|
||||
DBGMSGV("trackFile: \"%s\", FCB=0x%X, Handle=%i\n", fname, (byte*)fcb - RAM, fd);
|
||||
while (s->next) { /* find any existing fcb or fd */
|
||||
if (s->next->fcb == fcb || s->next->handle == fd) {
|
||||
if (s->next->handle != fd) {
|
||||
close(s->next->handle);
|
||||
Msg(" closed file \"%s\", Handle=%i\n", s->next->fname, s->next->handle);
|
||||
DBGMSGV(" closing file #%i: \"%s\"\n", s->next->handle, s->next->fname);
|
||||
#ifdef _WIN32
|
||||
{
|
||||
BOOL b;
|
||||
b = CloseHandle((HANDLE)s->next->handle);
|
||||
if (!b)
|
||||
DBGMSGV(" failed to close file #%i (Error=%lu): %s\n", s->next->handle, GetLastError(), GetErrorStr(GetLastError()));
|
||||
}
|
||||
#else
|
||||
if (close(s->next->handle))
|
||||
DBGMSGV(" failed to close file #%i (errno=%lu): %s\n", s->next->handle, errno, strerror(errno));
|
||||
#endif
|
||||
}
|
||||
Msg(" released file \"%s\", Handle=%i\n", s->next->fname, s->next->handle);
|
||||
DBGMSGV(" released file \"%s\", Handle=%i\n", s->next->fname, s->next->handle);
|
||||
s->next = rmHandle(s->next); /* release the tracker */
|
||||
}
|
||||
else
|
||||
|
||||
@@ -306,6 +306,12 @@ int main(int ac, char** av)
|
||||
fprintf(stderr, "Could not initialise CPMREDIR library\n");
|
||||
zxcc_exit(1);
|
||||
}
|
||||
|
||||
#ifdef FILETRACKER
|
||||
DBGMSG("File tracking is ENABLED\n");
|
||||
#else
|
||||
DBGMSG("File tracking is DISABLED\n");
|
||||
#endif
|
||||
|
||||
/* allow environment variables to override default locations */
|
||||
/* two options are supported, explicit overrides for each directory
|
||||
|
||||
Binary file not shown.
Binary file not shown.
BIN
Tools/zxcc/zxcc_ft.exe
Normal file
BIN
Tools/zxcc/zxcc_ft.exe
Normal file
Binary file not shown.
Binary file not shown.
BIN
Tools/zxcc/zxccdbg_ft.exe
Normal file
BIN
Tools/zxcc/zxccdbg_ft.exe
Normal file
Binary file not shown.
Reference in New Issue
Block a user