|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 17792 (0x4580)
Types: TextFile
Names: »EDC.MAC«
└─⟦c9df7130d⟧ Bits:30005915 Pascal MT+ Release 5.2 (Jet-80)
└─⟦this⟧ »EDC.MAC«
; *************************************
; * EDITOR FOR CHARACTER-GENERATORS *
; * BY: B.G.JOERGENSEN, OZ9DX *
; *************************************
;
.Z80
;
START: LD SP,STAK
LD HL,0017H ;CURSOR BOTTOM
CALL CURSOR
LD B,25 ;25 LINES
NEWL: LD DE,5020H ;80+SPACE
LD C,CONOUT
LOOP0: PUSH DE
PUSH BC
CALL BDOS
POP BC
POP DE
DEC D
JR NZ,LOOP0
PUSH DE
PUSH BC
LD DE,MESS0
CALL PRINT
POP BC
POP DE
DEC B
JR NZ,NEWL
CALL RVIDEO
LD HL,1517H
PUSH HL
CALL CURSOR
LD DE,MESS01
CALL PRINT
POP HL
PUSH HL
CALL CURSOR
LD DE,MESS02
CALL PRINT
POP HL
CALL CURSOR
LD DE,MESS03
CALL PRINT
LD D,10 ;UP 10 LINES
LOOP1: LD C,CONOUT
LD E,LF
PUSH DE
CALL BDOS
CALL WAIT
POP DE
DEC D
JR NZ,LOOP1
LD HL,1500H
CALL CURSOR
LD DE,MESS04
CALL PRINT
CALL LWAIT ;LONG WAIT
AGAIN: LD DE,MESS05
CALL PRINT
LD HL,0005H
LD IX,ADRA
CALL ASKLD ;LOAD A?
LD HL,(ADRA)
LD (ADRAF),HL
LD A,B
LD (SHOWA),A
XOR A
LD (AINIT),A
LD IY,CESS06
LD A,'B'
LD (IY),A
LD HL,000AH
LD IX,ADRB
CALL ASKLD ;LOAD B?
LD A,B
LD (SHOWB),A
LD IY,CESS06
LD A,'C'
LD (IY),A
LD HL,000FH ;LOAD C?
LD IX,ADRC
CALL ASKLD
LD A,B
LD (SHOWC),A
NSHW: LD DE,MESS09
CALL PRINT
CALL CIN
CP 'F'+1
JR NC,NSHW
LD (ROW),A
LD DE,MESS1
CALL PRINT
CALL NVIDEO
LD HL,(ADRA)
LD DE,(ADRB)
XOR A ; 0 CARRY
SBC HL,DE ;CALC DIFF
LD (LDIFB),HL
LD (DIFFB),HL
LD HL,(ADRA)
LD DE,(ADRC)
SBC HL,DE
LD (LDIFC),HL
LD (DIFFC),HL
LD HL,0005H
CALL CURSOR
LD DE,MESS2
CALL PRINT
LD HL,0006H
CALL CURSOR
LD DE,MESS3
CALL PRINT
LD HL,2A06H
CALL CURSOR
LD DE,MESS3
CALL PRINT
LD A,(SHOWA) ;A LOADED?
CP 'Y'
JR Z,NOCLR
CALL MEMCLR ;CLEAR 4K RAM
NOCLR: LD DE,GRAPH ;GRAPHIC MODE
CALL PRINT
LD HL,2606H
WIND: CALL WINDOW
JR NZ,WIND
LD HL,0007H
LD A,(ROW)
LD E,A
DEC E
RAST1: CALL RASTER
JR NZ,RAST1
LD HL,2A07H
LD A,(ROW)
LD E,A
DEC E
RAST2: CALL RASTER
JR NZ,RAST2
LD HL,2A06H ;SHOW B
CALL CURSOR
CALL RVIDEO
LD E,'B' ;INVERTED VIDEO
LD C,CONOUT
CALL BDOS
CALL NVIDEO
LD HL,(ADRA) ;START ADR
LD DE,(ZLINE) ;CALC ADR TOP LINE
LD A,7 ;TOP=LINE 7
NLINE: CP E
JR Z,TLINE
DEC E
DEC HL
JR NLINE
TLINE: LD (TOPADR),HL
LD DE,15 ;BOTTOM LINE ADR
ADD HL,DE
LD (BOTADR),HL
LD (CADR),HL
LD (INIADR),HL
TLX: LD HL,(TOPADR) ;RESTORE HL
LD A,(REF)
LD BC,(DIFFB)
CP 1 ;REF B
JR Z,BTLX
LD BC,(DIFFC)
BTLX: LD (DIFF),BC
LD A,(SHMOV)
CP 0
JR NZ,TLX1
LD A,(SCROLL)
CP 3 ;SCROLL BOTH
JR Z,TLX1
CP 2 ;B ONLY
JR Z,TLX2
TLX1: XOR A
LD (SHMOV),A
LD DE,1A07H ;CURSOR TOP LINE
LD A,03H
LD (HPOS),A
CALL TLINE1
LD A,(SCROLL)
CP 1
JP Z,TRYAGN
LD A,(REF)
CP 1
LD BC,(DIFFB)
JR Z,TLX2
LD BC,(DIFFC)
TLX2: LD (DIFF),BC
BSHO: LD BC,(DIFF)
LD DE,4607H
LD HL,(TOPADR)
XOR A ;CLR C
SBC HL,BC
LD A,2DH ;HOR.POS
LD (HPOS),A
CALL TLINE1
JP TRYAGN
;
;
TLINE1: PUSH HL ;SAVE ADR IN MEM
PUSH HL
LD A,(HL) ;READ MEM
LD (MBYTE),A
CALL D2HEX ;CONV.TO DISPLAY
POP HL
PUSH DE ;SAVE CURSOR ADR
PUSH DE ;EX HL,DE
CALL DHEX ;HEX DISPLAY
POP HL
PUSH HL
LD A,(HPOS) ;BIT 7 LOC.
LD H,A
CALL MPAT
POP HL
CALL CURSOR
LD DE,DPLAY
CALL PRINT
POP DE ;CURSOR(HL)
POP HL ;MEM-ADR
LD A,22 ;LAST LINE
CP E
RET Z
INC HL
INC DE
JR TLINE1
;
TRYAGN: LD HL,(CPOS) ;CURSOR START ADR.
CALL CURSOR
LD A,(CONT)
CP 0 ;CONT. SCROLL?
JR NZ,TRYAX ;YEPS
CALL CIN
TRYAX: LD HL,CTAB
LD IX,JTAB-2
LD BC,23
TNXT: INC IX
INC IX
CPI
JP PO,WRKEY
JR NZ,TNXT
LD L,(IX)
LD H,(IX+1)
JP (HL)
;
WRKEY: CALL BELL
JP TRYAGN
;
CUP: LD HL,(CPOS)
LD A,7-1 ;ABOVE TOP LINE
DEC L
CP L
JR Z,FAIL1
LD DE,(CADR) ;ADR IN MEM
DEC DE
CUPX: LD (CADR),DE
LD (CPOS),HL
JP TRYAGN
FAIL1: CALL BELL
JP TRYAGN
;
CDOWN: LD HL,(CPOS)
LD A,22+1
INC L
CP L
JR Z,FAIL1
LD DE,(CADR)
INC DE
LD (CADR),DE
JR CUPX
;
CRIGHT: LD HL,(CPOS)
LD A,2*8+3
INC H
INC H
CRIX: CP H
JR Z,FAIL1
LD (CPOS),HL
LD A,(VPOS) ;HOR POS
SRL A
LD (VPOS),A
JP TRYAGN
;
CLEFT: LD HL,(CPOS)
LD A,3-2
DEC H
DEC H
CP H
JR Z,FAIL1
LD (CPOS),HL
LD A,(VPOS)
SLA A
LD (VPOS),A
JP TRYAGN
;
;
NEXT: LD B,03H ;^C
PUSH BC
LD A,(SCROLL)
CP 2 ;B ONLY?
JR Z,NEX2
CP 1 ;A ONLY?
JR Z,NEX1
NEX0: LD A,(VPOS1)
LD (VPOS),A
LD HL,(CPOS1)
LD (CPOS),HL
LD HL,(INIADR)
LD DE,(OFFSET)
ADD HL,DE
LD (INIADR),HL
LD (CADR),HL
LD HL,(TOPADR)
ADD HL,DE
LD (TOPADR),HL
JP NXTXX
;
NEX1: LD A,(REF) ;B OR C?
CP 1
JR Z,BNEX
LD HL,(DIFFC)
LD DE,(OFFSET)
ADD HL,DE
LD (DIFFC),HL
JR NEX0
;
BNEX: LD HL,(DIFFB)
LD DE,(OFFSET)
ADD HL,DE
LD (DIFFB),HL
JR NEX0
;
NEX2: LD A,(REF)
CP 1
JR Z,BNEX2
LD DE,(OFFSET)
LD HL,(DIFFC)
XOR A
SBC HL,DE
LD (DIFFC),HL
JP NXTXX
;
BNEX2: LD DE,(OFFSET)
LD HL,(DIFFB)
XOR A
SBC HL,DE
LD (DIFFB),HL
NXTXX: LD A,(CSCRL)
CP 0
JR Z,BNEXX
CALL WAIT
LD C,06H ;INPUT?
LD E,0FFH
CALL BDOS
CP 0
JR NZ,CHRDY
POP BC
LD A,B
LD (CONT),A
JP TLX
CHRDY: XOR A
LD (CSCRL),A
LD (CONT),A
BNEXX: POP BC
JP TLX
;
SCCONT: XOR A
CPL
LD (CSCRL),A
JP TRYAGN
;
PREV: LD B,12H ;^R
PUSH BC
LD A,(SCROLL)
CP 2
JR Z,PRV2
CP 1
JR Z,PRV1
PRV0: LD A,(VPOS1)
LD (VPOS),A
LD HL,(CPOS1)
LD (CPOS),HL
LD HL,(INIADR)
LD DE,(OFFSET)
XOR A
SBC HL,DE
LD (INIADR),HL
LD (CADR),HL
LD HL,(TOPADR)
XOR A
SBC HL,DE
LD (TOPADR),HL
JP NXTXX
;
PRV1: LD A,(REF)
CP 1
JR Z,BPRV
LD HL,(DIFFC)
LD DE,(OFFSET)
XOR A
SBC HL,DE
LD (DIFFC),HL
JR PRV0
;
BPRV: LD HL,(DIFFB)
LD DE,(OFFSET)
XOR A
SBC HL,DE
LD (DIFFB),HL
JR PRV0
;
PRV2: LD A,(REF)
CP 1
JR Z,BPRV2
LD DE,(OFFSET)
LD HL,(DIFFC)
ADD HL,DE
LD (DIFFC),HL
JP NXTXX
;
BPRV2: LD DE,(OFFSET)
LD HL,(DIFFB)
ADD HL,DE
LD (DIFFB),HL
JP NXTXX
;
;
SETBIT: LD E,'p'
LD C,CONOUT
CALL BDOS
LD DE,(CADR)
LD A,(DE) ;GET BYTE
LD HL,VPOS
OR (HL)
SBTX: LD (DE),A
CALL D2HEX
LD HL,(CPOS)
LD H,20H ;MOVE CURSOR
CALL CURSOR
LD DE,DPLAY+6
CALL PRINT
LD HL,(CPOS)
CALL CURSOR
JP TRYAGN
;
RSTBIT: LD E,20H ;SPACE
LD C,CONOUT
CALL BDOS
LD HL,(CADR)
LD A,(VPOS)
CPL
AND (HL)
LD DE,(CADR)
JR SBTX
;
CINIT: LD HL,(CPOS)
LD (CPOS1),HL
LD HL,(CADR) ;CURRENT ADR
LD (INIADR),HL
LD A,(VPOS)
LD (VPOS1),A
JP TRYAGN
;
SCRAB: LD A,3
LD (SCROLL),A
LD (INIT),A
JP TRYAGN
;
REFB: LD A,1
LD (REF),A
LD HL,2A06H ;SHOW B
CALL CURSOR
CALL RVIDEO
LD E,'B'
LD C,CONOUT
CALL BDOS
CALL NVIDEO
LD BC,(DIFFB)
JP TLX2
;
SCRA: LD A,1
LD (SCROLL),A
LD (INIT),A
JP TRYAGN
;
REFC: LD A,2
LD (REF),A
LD HL,2A06H
CALL CURSOR
CALL RVIDEO
LD E,'C'
LD C,CONOUT
CALL BDOS
CALL NVIDEO
LD BC,(DIFFC)
JP TLX2
;
SCRB: LD A,2
LD (SCROLL),A
LD (INIT),A
JP TRYAGN
;
AEQUB: LD A,(REF)
CP 1
JR Z,EQUB
LD DE,(LDIFC)
LD (DIFFC),DE
JP TLX
EQUB: LD DE,(LDIFB)
LD (DIFFB),DE
JP TLX
;
MOVBA: LD A,(REF)
LD (SHMOV),A
CP 1 ;B?
JR Z,MOVB
XOR A ;C=0
LD HL,(TOPADR)
LD DE,(DIFFC)
SBC HL,DE
LD DE,(TOPADR)
LD BC,16
LDIR
JP TLX
;
MOVB: XOR A
LD HL,(TOPADR)
LD DE,(DIFFB)
SBC HL,DE
LD DE,(TOPADR)
LD BC,16
LDIR
JP TLX
;
BPAGE: LD DE,16
LD (OFFSET),DE
JP TRYAGN
;
FSAVE: CALL RVIDEO
LD DE,XGRAPH
CALL PRINT
LD DE,MES07A
CALL PRINT
CALL CLRFCB
CALL FNAME
CALL FCBINI
JR C,OKSV
LD DE,MESS0A
CALL PRINT
CALL LWAIT
JR FSAVE
OKSV: CALL FILOP
CP 0FFH
JR Z,OKNF
LD DE,MESS0D
CALL PRINT
CALL CIN
RES 5,A
CP 'Y'
JP NZ,QUIT
LD DE,FCBA
LD C,DELFIL
CALL BDOS ;DELETE FILE
OKNF: CALL FILCR ;MAKE FILE
OKNF1: LD DE,MESS0E
CALL PRINT
CALL CIN
SUB 30H
CP 0
JR Z,CLSOK
LD DE,(ADRAF)
OREX: PUSH AF
LD B,8 ;8*128=1K
OREC: PUSH BC
PUSH DE
LD C,SETDMA
CALL BDOS
CALL SEQWR
POP DE
LD HL,128
ADD HL,DE
EX DE,HL
POP BC
DEC B
JR NZ,OREC
POP AF
DEC A
JR NZ,OREX
CLSOK: LD DE,FCBA
LD C,CLOSEF
CALL BDOS
JP QUIT
;
;
;
BLINE: LD DE,1
LD (OFFSET),DE
JP TRYAGN
;
LOCK: LD A,(REF)
CP 1 ;B?
JR Z,BLOCK
LD DE,(DIFFC)
LD (LDIFC),DE
JP TRYAGN
BLOCK: LD DE,(DIFFB)
LD (LDIFB),DE
JP TRYAGN
;
EXIT: CALL RVIDEO
LD DE,XGRAPH
CALL PRINT
LD DE,MESS0C
CALL PRINT
CALL CIN
RES 5,A
CP 'Y'
JR Z,QUIT
JP FSAVE ;SAVE FILE
QUIT: CALL NVIDEO
JP BOOT
;
ASKLD: PUSH IX
PUSH HL
CALL CURSOR
LD DE,MESS06
CALL PRINT
CALL CIN
RES 5,A
LD B,A
CP 'Y' ;YES?
POP HL
POP IX
PUSH BC
JR NZ,NSHWA
CALL LOADF
NSHWA: LD A,(AINIT)
CP 0 ;A FILE?
JR Z,NSHWB
CALL LODADR
NSHWB: POP BC
RET
;
;
LODADR: LD A,1
LD (AINIT),A
PUSH IX
JR LDF0
;
LOADF: LD A,2
LD (AINIT),A
PUSH IX
INC L
LAGN: PUSH HL
CALL CURSOR
LD DE,MESS07
CALL PRINT ;CLR SPACE
CALL CLRFCB
CALL FNAME
CALL FCBINI
JR C,NAMOK
POP HL
PUSH HL
CALL CURSOR
LD DE,MESS0A ;FAIL NAME
CALL PRINT
CALL LWAIT ;SHW A WHILE
POP HL
JR LAGN ;TRY AGAIN
NAMOK: CALL FILOP ;OPEN FILE
CP 0FFH ;ANY FILE?
JR NZ,OKFL
LD DE,MESS0B
CALL PRINT
CALL LWAIT
LD SP,STAK ;RESET SP
JP AGAIN
OKFL: POP HL ;ADRESS
LDF0: INC L
AGN1: PUSH HL
CALL CURSOR
LD DE,MESS08
CALL PRINT
LD DE,SMEM
PUSH DE
LD C,READBF ;GET STRING
CALL BDOS
POP DE
CALL CHEX
EX DE,HL ;DE=HEX
POP HL ;HL=CURSOR
JP PO,AGN1
POP IX
LD (IX),E
LD (IX+1),D ;ADR=BIN(2)
LD A,(AINIT)
CP 2
JR NZ,ENDFIL
GETRC: PUSH DE
LD C,SETDMA
CALL BDOS
CALL SEQRD ;READ 1 REC
POP DE
CP 0 ;EOF?
JR NZ,ENDFIL ;YES
LD HL,128
ADD HL,DE ;UPDATE DMA
EX DE,HL
JR GETRC
ENDFIL: SUB A
LD (AINIT),A ;CLR
RET
RVID: DB 1BH,70H,'$'
NVID: DB 1BH,71H,'$'
;
RVIDEO: LD DE,RVID
CALL PRINT
RET
;
NVIDEO: LD DE,NVID
CALL PRINT
RET
;
PRINT: LD C,PSTRING ;PRINT STRING
CALL BDOS
RET
;
WAIT: XOR A
LD DE,0000H
LD HL,2000H
MWAIT: DEC HL
SBC HL,DE
JR NZ,MWAIT
RET
;
LWAIT: LD B,30H
TWAIT: CALL WAIT
DEC B
JR NZ,TWAIT
RET
;
; DISPLAY MEM PATTERN
; *******************
;
MPAT: PUSH HL
CALL CURSOR
POP HL
LD A,(MBYTE) ;GET BYTE
LD B,A
LD C,08H ;8 BITS
MPAT0: SLA B ;ROT BITS->CY
PUSH BC ;SAVE COUNT
JR C,MPAT1
CALL PSPAC ;OUT 2 SPACES
JR NXBIT
MPAT1: CALL PDOT ;DOT-SPACE
NXBIT: POP BC
DEC C
JR NZ,MPAT0
RET
;
PSPAC: INC H
INC H ;NEXT LOC.
PUSH HL
LD DE,SPA2
CALL PRINT
POP HL
RET
;
SPA2: DB ' $' ;2 SPACE
DTSP: DB 'p $' ;DOT+SP
;
PDOT: INC H
INC H
PUSH HL
LD DE,DTSP
CALL PRINT
POP HL
RET
;
; CONVERT HEX TO DISPLAYABLE HEX
; ******************************
;
DHEX: LD IX,DPLAY
CALL DHEXX
LD H,L
INC IX
CALL DHEXX
RET
;
D2HEX: LD IX,DPLAY+6
LD H,A
DHEXX: LD A,H
SRL A
SRL A
SRL A
SRL A
CALL DHEX0
INC IX
LD A,H
AND 0FH
CALL DHEX0
RET
;
DHEX0: CP 0AH
JR NC,DHEX1
ADD A,30H ;ASCII
DHEX2: LD (IX),A
RET
DHEX1: ADD A,37H
JR DHEX2
;
DPLAY: DB 0,0,0,0,' $'
;
; CONVERT 4 DIG "HEX" TO TRUE HEX
; *******************************
;
CHEX: INC DE
INC DE
CALL CCHK
RET PO
SLA C
SLA C
SLA C
SLA C
LD H,C
INC DE
CALL CCHK
RET PO
LD A,C
OR H
LD H,A
INC DE
CALL CCHK
RET PO
SLA C
SLA C
SLA C
SLA C
LD L,C
INC DE
CALL CCHK
RET PO
LD A,C
OR L
LD L,A
XOR A
RET
;
CCHK: PUSH HL
LD A,(DE) ;MSB
LD BC,17
LD HL,TAB2
CPIR
DEC BC
POP HL
RET
;
;
WINDOW: PUSH HL
CALL CURSOR
LD E,'!'
LD C,CONOUT
CALL BDOS
WND1: POP HL
INC L
LD A,23 ;LAST LINE
CP L
RET
;
RASTER: PUSH HL
PUSH DE
CALL CURSOR
POP DE
INC E
LD A,'9'+1
CP E
JR Z,RST3
LD A,'F'+1
CP E
JR Z,RST5
RST4: LD A,'0'
CP E
JR NZ,RSTX
POP HL
LD (ZLINE),HL
PUSH HL
RSTX: PUSH DE
LD C,CONOUT
CALL BDOS
POP DE
JR WND1
;
RST3: LD E,'A'
JR RST4
;
RST5: LD E,'0'
JR RST4
;
ZLINE: DS 2
;
CIN: LD C,CONIN ;GET CONSOLE INPUT
CALL BDOS
RET
;
BELL: LD E,07H ;BELL CODE
LD C,CONOUT
CALL BDOS
RET
;
MEMCLR: LD DE,(ADRA)
LD BC,2000H
MCLR: LD HL,ZERO
LOP1: LDI
DEC HL
JP PE,LOP1
RET
ZERO: DB 0
;
;
CURSOR: LD BC,2020H ;ADD SPACES
ADD HL,BC
LD (CURP+2),HL
LD HL,CURP-1
LD B,4
CRS: INC HL
PUSH HL
PUSH BC
LD E,(HL)
LD C,CONOUT
CALL BDOS
POP BC
POP HL
DEC B
JR NZ,CRS
RET
;
; FILE OPERATIONS:
; ****************
;
FCBA: DS 36
;
CLRFCB: LD DE,FCBA
PUSH DE
LD BC,36
CALL MCLR
POP DE
INC DE
LD BC,11
LOP3: LD HL,BLANK
LDI
JP PE,LOP3
RET
;
BLANK: DB 20H
;
FILNAM: DB 14
DS 15
;
FNAME: LD DE,FILNAM
LD C,READBF
CALL BDOS
RET
;
CCNT: DB 0
;
FCBINI: LD IY,FCBA
LD IX,FILNAM
LD C,(IX+1) ;AMOUNT CHAR'S
LD A,C
LD (CCNT),A
LD B,0 ;DEF DRIVE
LD A,(IX+3) ;DRIVE REQ?
CP ':'
JR NZ,DEFDRV ;USE DEFAULT
DEC C
DEC C ;-2 FOR DRV SEL.
LD A,C ;SAVE CHAR CNT
LD (CCNT),A
INC IX
INC IX
LD A,(IX) ;DRIVE NR
RES 5,A
CP 'A' ;A-DRIVE?
JR NZ,BDRV ;THEN B DRIVE
LD B,1 ;SEL A
JR DEFDRV
BDRV: LD B,2 ;SEL B
DEFDRV: LD (IY),B
INC IX
INC IX
PUSH IX ;POINTS 1 LETTER
PUSH IX
LD A,C ;ANYTHING LOADED?
CP 0
JR Z,NFAIL ;NO NAME
FPNT: LD A,(IX) ;FIND POINT
CP '.'
JR Z,PNT ;FOUND
INC IX ;TRY NEXT
DEC C
JR NZ,FPNT
NFAIL: POP IX ;SET STACK
FAILN: POP IX
XOR A ;C=0=FAIL
RET
;
PNT: DEC C ;.=-1
LD A,3 ;TYPE 3 LETTERS?
CP C
JR NZ,NFAIL ;WRONG TYPE
PUSH IY
FTYP: LD A,(IX+1) ;GET FILE TYPE
RES 5,A ;UPPER CASE
LD (IY+9),A
INC IX ;-> NEXT
INC IY
DEC C
JR NZ,FTYP
POP IY
POP IX
LD A,(CCNT) ;AMOUNT CHARS
SUB 4 ;-.TYP
CP 0 ;ANY NAME?
JR Z,FAILN
POP IX
GNAME: LD B,(IX) ;CHAR 1
LD (IY+1),B
INC IX
INC IY
DEC A
JR NZ,GNAME
SCF ;C=1=NOTHING WRONG
RET
;
FILOP: LD DE,FCBA
LD C,OPENF
CALL BDOS
RET
;
FILCR: LD DE,FCBA
LD C,MAKEF
CALL BDOS
RET
;
SEQRD: LD DE,FCBA
LD C,RDSEQ
CALL BDOS
RET
;
SEQWR: LD DE,FCBA
LD C,WRSEQ
CALL BDOS
CP 0
RET Z
LD DE,MESS0F
CALL PRINT
CALL LWAIT
LD SP,STAK
JP QUIT
;
CURP: DB 1BH,59H,0,0,'$'
;
CTAB: DB 05H,18H,04H,13H,03H,12H,16H,14H,10H,19H,02H
DB 11H,01H,17H,06H,07H,08H,0BH,0FH,15H,0EH,1DH
;
JTAB: DW CUP,CDOWN,CRIGHT,CLEFT,NEXT,PREV,SETBIT
DW RSTBIT,CINIT,EXIT,SCRAB,REFB,SCRA,REFC
DW SCRB,AEQUB,MOVBA,BPAGE,FSAVE,BLINE,LOCK
DW SCCONT
;
SHADR: DS 2
STADR: DS 2
TOPADR: DS 2
BOTADR: DS 2
INIADR: DS 2
CADR: DS 2
MBYTE: DS 1
SCROLL: DB 3
INIT: DB 0
AINIT: DB 1
SHMOV: DB 0
CONT: DB 0
CSCRL: DB 0
REF: DB 1
OFFSET: DB 16,0
LDIFB: DS 2
LDIFC: DS 2
DIFF: DS 2
DIFFB: DS 2
DIFFC: DS 2
;
GRAPH: DB 1BH,46H,'$'
XGRAPH: DB 1BH,47H,'$'
;
SMEM: DB 4,0,0,0,0,0
SADR: DB 4,0,0,0,0,0
ROW: DS 1
SHOWA: DS 1
SHOWB: DS 1
SHOWC: DS 1
ADRA: DS 2
ADRAF: DS 2
ADRB: DB 0,20H
ADRC: DB 0,30H
;
TAB2: DB 'FEDCBA9876543210$'
;
VPOS1: DB 80H
VPOS: DB 80H
HPOS: DS 1
CPOS: DB 22,3
CPOS1: DB 22,3
;
MESS0: DB CR,LF,'$'
;
MESS01: DB ' Editor for character-generators ',CR,LF,'$'
MESS02: DB ' made by B.G. Joergensen, OZ9DX ',CR,LF,'$'
MESS03: DB ' Release 1.2 01-Oct-1983 ',CR,LF,'$'
MESS04: DB ' WAIT $'
;
MESS05: DB CS,CR
DB ' The editor enables you to either edit an existing file'
DB ' (file A)(Y/N=Y), or to',CR,LF
DB ' create a new one (Y/N=N), while comparing with or copy'
DB 'ing from 1 or 2 other ',CR,LF
DB ' file(s) (B and C). The memory start-adress for the A-f'
DB 'ile should be placed at',CR,LF
DB ' a higher location than those of files B and C. Lowest '
DB 'usable adress is: 1200H',CR,LF,'$'
;
MESS06: DB ' Do you wish to load file '
CESS06: DB 'A Y/N ?: $'
;
MES07A: DB CS,CR,LF,LF,LF
MESS07: DB CR,LF,' Enter filename : $'
;
MESS08: DB CR,LF,' Memory start adress (4 dig HEX) : $'
;
MESS09: DB CS,CR,LF,' Select adress of toprow-line. This is no'
DB 'rmally top adress of capital ',CR,LF
DB ' letters. Enter 1 hex-digit only: $'
;
MESS0A: DB ' illegal name and/or file type !!! try again $'
;
MESS0B: DB CS,CR,LF,LF,' file does not exist WAIT $'
;
MESS0C: DB CS,CR,LF,LF,LF,LF
DB ' are you sure, you dont want to save the result of'
DB ' all your efforts ?',CR,LF
DB ' answer Y = EXIT or N = SAVE. Y/N ?: $'
;
MESS0D: DB CS,CR,LF,LF,LF
DB ' file exists. overwrite ? Y/N : $'
;
MESS0E: DB CR,LF,' length in Kilobytes (enter 1 dig) ?: $'
;
MESS0F: DB CS,CR,LF,LF,' disk space full !!!!!! $'
;
MESS1: DB CS,CR
DB ' CURSOR: ^E=up line ^X=down line ^D=right'
DB ' ^S=left ^P=save pos ',CR,LF
DB ' SCROLL: ^C=up screen ^R=down screen ^B=R&L s'
DB 'ide ^A=L-side ^F=R-side ',CR,LF
DB '^K=page ^U=by line ^Q=file B ^W=file '
DB 'C ^Å=continous (2xCR=STOP)',CR,LF
DB ' WRITE : ^V=set bit ^T=reset bit ^H=move '
DB 'R-side to left ',CR,LF
DB ' OTHER : ^N=lock R-L ^G=find R=L ^O=save '
DB 'file ^Y=exit $'
;
MESS2: DB '--------------------------------------------------'
DB '-----------------------------$'
MESS3: DB 'A'+80H,' 7 6 5 4 3 2 1 0$'
DS 100
STAK: DS 2
;
CS EQU 05H ;CLEAR SCREEN
LF EQU 0AH
CR EQU 0DH
WBOOT EQU 0001H
BDOS EQU 0005H
BOOT EQU 0000H
REBOOT EQU 0
CONIN EQU 1
CONOUT EQU 2
LSTOUT EQU 5
PSTRING EQU 9
READBF EQU 10
SELDSK EQU 14
OPENF EQU 15
CLOSEF EQU 16
RDSEQ EQU 20
WRSEQ EQU 21
MAKEF EQU 22
SETDMA EQU 26
GETADR EQU 27
DELFIL EQU 19
RDRAND EQU 33
WRRAND EQU 34
FILSIZ EQU 35
SRNDRC EQU 36
END START
«eof»