DEVEX/4 ASM ;---------------------------------------
;Hilfsprogramme zur Erweiterung von
; EDAS V4
;
;mit Diskettenerweiterung D004-Floppy
;mit F-Tastenbelegung f}r D005-Tastatur
;
;
; Adressen: D5D0H D7D9H
;
;
; ` ml 09.07.92
;---------------------------------------
PV1 EQU 0F003H
CRT EQU 00H
KBD EQU 04H
KBDS EQU 0CH
WAIT EQU 14H
INLIN EQU 17H
ERRM EQU 19H
HLHX EQU 1AH
AHEX EQU 1CH
OSTR EQU 23H
OCHR EQU 24H
BRKT EQU 2AH
SPACE EQU 2BH
CRLF EQU 2CH
DABR EQU 32H
KEY EQU 39H
KEYLI EQU 3AH
MTOP EQU 74H
MBOT EQU 72H
ARGN EQU 0B781H
ARG1 EQU ARGN+1
ARG2 EQU ARG1+2
ARG3 EQU ARG2+2
ARG5 EQU ARG3+4
ARG6 EQU ARG5+2
NUMVX EQU 0B797H
WINLG EQU 0B79EH
CURSO EQU 0B7A0H
SUTAB EQU 0B7B0H
;
SUBALT EQU 0B7FEH ;SUTAB merken
SUBNEU EQU 0BA00H ;neue SUTAB
;-------
ORG 0C0DAH ;REEDAS
CALL DEVEX ;Start DEVEX
DEFB 0
;-------
ORG 0C12AH ;Men}gr|~e
CALL FLMEN ;ermitteln
;-------
ORG 0C1F9H ;QUIT (EXIT)
CALL DEVOX ;Stop DEVEX
DEFB 0
;-------
ORG 0C350H
DEFW 0DDDDH
DEFM 'KEY'
DEFB 1
OR A
JR Z,KEYL ;KEY
LD A,L
OR A
JP Z,KEY0 ;KEY 0
CP 0D5H
JP Z,KEYD5 ;KEY D5
CALL PV1
DEFB KEY
RET
KEYL CALL PV1
DEFB KEYLI
RET
KEYCL LD HL,0B900H
XOR A
LD B,9CH
KCL LD M,A
INC HL
DJNZ KCL
RET
DEFW 0 ;frei
;-------
ORG 0C5EAH ;nach Nameneing.
JP NEWL
NOP
NOP
NOP
NOP
NOP
NOP ;l|schen
NOP
NOP
NOP
;-------
; nach Ende von EDAS/V4:
ORG 0D5D0H
NEWL CALL PV1
DEFB OSTR
DEFM 'ASM'
DEFW 0A0DH
NOP
LD A,(CURSO+1) ;Zeile
DEC A
LD D,A
CALL PV1
DEFB DABR
RET
;DEVEX-Diskettenerweiterung:
;
DEVEX LD (IX+9),0DDH
LD A,0CH
CALL PV1
DEFB CRT ;CLS
LD HL,0
LD B,80H
DEV02 LD A,M
CP 7FH ;Test Prolog?
INC HL
JR Z,DEV01
DJNZ DEV02
JR DEV03
DEV01 CP 7FH
JR NZ,DEV03
LD M,0 ;l|schen
DEV03 LD HL,(SUTAB)
LD (SUBALT),HL ;merken
LD BC,0FC80H
IN A,(C)
CP 0A7H ;Floppy?
RET NZ
LD DE,SUBNEU
LD (SUTAB),DE
LD BC,92H ;L{nge
LDIR
LD HL,MBO ;MBO neu
LD (SUBNEU+2),HL
LD HL,MBI ;MBI neu
LD (SUBNEU+10),HL
LD HL,STAB ;ISRO-CSRI neu
LD DE,SUBNEU+16
LD C,8
LDIR
RET
;
STAB DEFW ISRO
DEFW CSRO
DEFW ISRI
DEFW CSRI
;-------
FLMEN LD BC,0FC80H
IN A,(C)
CP 0A7H ;Floppy?
LD BC,2600H
RET Z ;ja
LD BC,DEVEX-0BA00H
RET
;-------
DEFW 0DDDDH
DEFM 'DISK'
DEFB 1
LD BC,0FC80H
IN A,(C)
CP 0A7H ;Floppy?
JR Z,DISK
FLERR CALL PV1
DEFB ERRM
RET
DISK LD HL,SUBNEU
JR DEV06
;-------
DEVOX LD (IX+9),7FH
JR TAPE
;-------
DEFW 0DDDDH
DEFM 'TAPE'
DEFB 1
LD BC,0FC80H
IN A,(C)
CP 0A7H ;Floppy?
JR NZ,FLERR
TAPE LD HL,(SUBALT)
DEV06 LD (SUTAB),HL
RET
;-------
DEFW 0DDDDH
DEFM 'ERA'
DEFB 1
LD BC,0FC80H
IN A,(C)
CP 0A7H ;Floppy?
JR NZ,FLERR
CALL NAME
LD A,11H ;Era
JP STEUER
;-------
DEFW 0DDDDH
DEFM 'DIR'
DEFB 1
LD BC,0FC80H
IN A,(C)
CP 0A7H ;Floppy?
JR NZ,FLERR
LD A,0DH ;Directory open
WDI CALL STEUER
RET C ;Fehler
BIT 2,A ;Ende
JR NZ,STAT
LD D,3 ;3 Namen
LD B,82H
NA3 LD E,9 ;Name
CALL ANZ
PUSH AF
LD E,2 ;Typ
CALL ANZ
POP AF
BIT 7,A
LD A,' ' ;WR
JR Z,WR
LD A,'*' ;RO
WR CALL PV1
DEFB OCHR
LD A,' '
CALL PV1
DEFB OCHR
INC B
DEC D
JR NZ,NA3
LD E,2
CALL ANZ
LD A,5 ;Dir weiter
JR WDI
STAT LD A,15H ;Status
CALL STEUER
RET C ;Fehler
LD E,20
LD B,82H
ANZ IN A,(C)
PUSH AF
AND 7FH
INC B
PUSH DE
PUSH BC
CALL PV1
DEFB OCHR
POP BC
POP DE
POP AF
DEC E
JR NZ,ANZ
RET
;-------
ISRO LD (IX+2),0 ;Blocknr.
LD L,(IX+5)
LD H,(IX+6) ;Blockpuffer
LD E,11 ;Anzahl
CALL NAM1 ;Name ausgeben
LD D,11 ;write open
DEV10 INC (IX+2) ;N{chster Bl.
LD H,(IX+6)
LD L,(IX+5)
LD BC,81F2H ;Sektorpuffer
LD E,80H ;Blockl{nge
DEV08 OUTI
INC B
INC B
DEC E
JR NZ,DEV08
DEV11 LD A,D ;Steuerbyte
JP STEUER
;-------
MBO LD D,3 ;write normal
JR DEV10
;-------
CSRO CALL MBO
RET C ;bei Fehler
LD D,43H ;write close
LD (IX+5),0
LD (IX+6),0B7H
JR DEV11
;-------
ISRI LD (IX+2),0
POP DE
POP HL ;Name
PUSH HL
PUSH DE
LD D,9 ;read open
LD E,11 ;L{nge Name
CALL NAM1 ;Name ausgeben
PUSH DE
JR DEV13
;-------
MBI PUSH DE
LD D,1 ;read normal
DEV13 CALL DEV11 ;Steuerbyte
POP DE
RET C ;bei Fehler
PUSH DE
PUSH HL
PUSH AF
LD L,(IX+5)
LD H,(IX+6);Puffer
LD BC,80F2H
LD E,80H ;L{nge
DEV14 INI
INC B
INC B
DEC E
JR NZ,DEV14;Block lesen
INC (IX+2) ;Blocknr.
POP AF
POP HL
POP DE
RET
;-------
CSRI CALL PV1
DEFB CRLF
RET
;-------
NAME CALL PV1
DEFB OSTR
DEFM 'Name :'
DEFB 0
CALL PV1
DEFB INLIN
LD HL,6
ADD HL,DE
LD E,12
NAM1 LD BC,83F3H ;Namenpuffer
NAM2 OUTI
INC B
INC B
DEC E
JR NZ,NAM2
RET
;-------
STEUER LD BC,80F3H
OUT (C),A ;Steuerbyte
STEU PUSH BC
LD A,1
CALL PV1
DEFB WAIT
POP BC
IN A,(C)
BIT 0,A
JR NZ,STEU ;fertig ?
AND A ;CY=0
BIT 7,A
RET Z ;kein Fehler
INC B
IN A,(C) ;Fehlernr.
CALL PV1
DEFB AHEX
ERR CALL PV1
DEFB ERRM
SCF ;CY=1
RET
;-------
;Erweiterung der Tastenbelegung f}r
;D005-Tastatur:
KEY0 CALL KEYCL
LD L,1
LD M,5
INC HL
INC HL
LD M,6
RET
KEYD5 CALL KEYCL
LD HL,KEA
LD DE,0B900H
LD BC,KEE-KEA
LDIR
RET
;
KEA DEFB 0
DEFB '[' ;F1
DEFB 0
DEFB '\' ;F2
DEFB 0
DEFB ']' ;F3
DEFB 0
DEFB '~' ;F4
DEFB 0
DEFB 5 ;F5
DEFB 0
DEFB 6 ;F6
DEFB 0
DEFB '{' ;F7
DEFB 0
DEFB '|' ;F8
DEFB 0
DEFB '}' ;F9
DEFB 0
DEFB '`' ;F10
DEFB 0
DEFB '' ;F11
DEFB 0
KEE
ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ
Detected encoding: ANSI (CP1252) | 4
|
|