CF2 ASM ; CAOS 3.4 - ROM F
; Version V.24 / RS 232
;
; Date: 11.06.1991 (c) by '#+$'
;
SIO EQU 008H ;SIO PORT A
CTC EQU 00CH ;SIO-CTC
; StrByte des Interface-Moduls
UMODL EQU 1EEH ;M003 V24
ORG 0F000H
PRESET JP PWRON ;>> POWER ON <<
JP PV1 ;DEFB NR
JR PV2 ;(ARGC)
ZEI0 DEFB 0
JR PV3 ;REG. E
ZEI2 DEFB 2
JR PV4 ;+IRM
ZEI4 DEFB 4
JP RCALL
JP NEWOS ;>JUMP<
JP PV5 ;(ARGC)
JP IRMON
JP IRMOFF
PV6 PUSH BC ;*** PV 6 ***
CALL IRMON
CALL PV2
JR PV51
PV5 PUSH BC ;*** PV 5 ***
CALL IRMON
CALL PV3
PV51: CALL IRMOFF
POP BC
RET
PV4 PUSH AF ;*** PV 4 ***
IN A,88H
OR 4
OUT 88H,A
POP AF
CALL PV3
SCROFF PUSH AF
IN A,88H
AND 0FBH
OUT 88H,A
POP AF
RET
PV1 PUSH HL ;*** PV 1 ***
DI
POP HL
POP HL
INC HL
PUSH HL
DEC HL
DEC SP
DEC SP
EI
TABJP PUSH DE
LD E,M
PV11 LD D,0
LD HL,(0B7B0H)
PUSH AF
ADD HL,DE
ADD HL,DE
POP AF
LD E,M
INC HL
LD D,M
EX DE,HL
POP DE
PV1END EX (SP),HL
RET
PV3 SCF ;*** PV 3 ***
DEFB 0EDH
PV2 AND A ;*** PV 2 ***
PV21 PUSH HL
PUSH DE
PUSH BC
PUSH HL
LD HL,POPS3
EX (SP),HL
PUSH HL
PUSH DE
JR C,PV11
LD DE,(0B780H)
JR PV11
IRMON POP BC ;*** IRM ON ***
DI
LD (IX+0BH),A
IN A,88H
SET 2,A
OUT 88H,A
LD (0B7CBH),SP
LD SP,(0B7AEH)
OFFEND LD A,(IX+0BH)
EI
PUSH BC
RET
IRMOFF POP BC ;*** IRM OFF ***
DI
LD SP,(0B7CBH)
LD (IX+0BH),A
IN A,88H
RES 2,A
OUT 88H,A
JR OFFEND
INTB PUSH HL ;UP 16 INTB
LD HL,(0B7BBH)
JR TABJP
OCHRP LD A,(0B7D9H)
OCHR PUSH HL ;UP 24 OCHR
LD HL,(0B7B9H)
JR TABJP
RCALL EX (SP),HL ;*** RCALL ***
LD E,M
INC HL
LD D,M
INC HL
EX DE,HL
ADD HL,DE
EX (SP),HL
PUSH DE
RET
;*** Switch & Jump ***
DEFW 7F7FH ;>SWITCH<
DEFM 'SWYTCH'
DEFB 1
;
LD D,E
CALL MODU
MODOUT ;Ausgabe 3 Bytes L,H,D
CALL LHSPCE
LD A,H
CALL AHSPCE
LD A,D
CALL AHEX
JP CRLF
MODU ;VR:AF,H,BC,(D) ;UP 26 MODU
LD H,0B8H
LD C,80H
LD B,L
CP 2
JR NC,MDL2
LD D,M
MDL1 IN H,(C)
RET
MDL2 LD M,D
LD B,L
INC B
IN A,88H
DJNZ NRAM0
AND 0F5H
BIT 0,D
JR Z,RAM01
SET 1,A
RAM01 BIT 1,D
JR Z,OUTB
SET 3,A
OUTB OUT 88H
JR MDL1
NRAM0 DJNZ NIRM
BIT 0,D
RES 2,A
JR Z,OUTB
SET 2,A
JR OUTB
NIRM DJNZ NROM
RLA
LD H,D
RR H
RRA
JR OUTB
NROM LD B,L
OUT (C),D
JR MDL1
DEFW 7F7FH ;>JUMP<
DEFM 'JUMP'
DEFB 1
RET Z
LD A,L
;
JUMP OR A ;UP 27 JUMP
JR Z,SYS
LD B,A
LD C,80H
IN A,(C)
INC A
JP Z,ERRM
LD D,0FFH
CALL MOSW2
XOR A
LD B,(IX+4)
LD L,B
LD M,A
JR SYS1
SYS LD C,88H
IN A,(C)
SET 0,A
SYS1 DI
JP 0B7B4H
;====== POWER ON =======================
;(Einspr}nge PWRON,NEWOS,BYE)
PWRON DI
LD SP,1C4H
LD A,3EH
OUT 88H
CALL MODSW1
LD E,(IX+4)
XOR A
LD B,0E0H
LD H,A ;Clear Memo
LD L,A
PWRO1 LD M,A
INC L
JR NZ,PWRO1
INC H
DJNZ PWRO1
LD C,80H ;Modul off
LD A,E
PWRO2 CP B
JR Z,PWRO3
OUT (C),L
PWRO3 DJNZ PWRO2
LD B,E
NEWOS DI
LD (IX+4),B
CALL SYSI ;Systeminit
XOR A
PWRO4 LD (0B79BH),A ;Windows
CALL WCOPY
INC A
CP 0AH
JR C,PWRO4
CALL MODSW
BYE LD SP,1C4H ;UP 0D BYE
LD A,1EH
OUT 88H ;init.MEM on !!
CALL SYSI
JR MEN1
DEFW 7F7FH ;>MENU<
DEFM 'MENU'
DEFB 1
;
POP HL
MEN1 CALL OSTR
DEFB 0CH
DEFB 0AH
DEFM '* HC-CAOS 3.4 *'
DEFB 0
MENU LD HL,0C000H ;UP 46 MENU
LD C,L
LD B,L
MEN2 CALL CRLF
MEN3 CALL BRKT
JR C,LOOP
LD A,(IX+9)
MEN4 CPIR
JP PO,LOOP
CPI
JR NZ,MEN4
CALL OCHRP
MEN5 LD A,M
CP 2
JR C,MEN2
CP 30H
JR C,MEN6
CP 60H
JR NC,MEN6
CALL OCHR
INC HL
DEC BC
JR MEN5
MEN6 CALL CLLN
JR MEN3
NLP1 POP HL ;LOOP
NLP2 CALL ERRM
LOOP0 LD A,0BH
CALL C,OCHR
CALL CLLN
LOOP CALL OCHRP ;UP 12 LOOP
CALL INLIN
JR C,LOOP0 ;Brk
INC DE
LD A,(DE)
CP 21H
JR C,LOOP
CALL MSUCH
JR NC,NLP2
PUSH HL
CALL GARG
JR C,NLP1
LD HL,LOOP
EX (SP),HL
LD A,M
INC HL
PUSH HL
AND A
CALL LARG
CALL Z,SCROFF
AND A
RET
MSUCH LD HL,0C000H
LD B,L
LD C,L
LD A,(IX+9)
ZSUCH CPIR ;UP 1D ZSUCH
SCF
CCF
RET PO
CPI
JR NZ,ZSUCH
PUSH AF
PUSH DE
ZS1 LD A,(DE)
CP 21H
JR C,ZS3
INC DE
CPI
JR Z,ZS1
ZS2 POP DE
POP AF
JR ZSUCH
ZS3 LD A,M
CP 2
JR C,ZS4
CP 20H
JR C,ZS2
INC HL
JR ZS3
ZS4 POP BC
POP AF
SCF
RET
WAIT1 DEC A
RET Z
PUSH AF
POP AF
JR WAIT1
CBNRO CALL CLLN
BNROST LD A,(IX+2)
AHOSTR CALL AHEX
;
OSTR EX (SP),HL ;UP 23 OSTR
CALL ZKOUT
EX (SP),HL
RET
NORM CALL NIN ;UP 13 NORM
;
NOUT LD HL,ZEI0 ;UP 20 NOUT
;
SOUT PUSH HL ;UP 1E SOUT
LD HL,(0B7B9H)
EX (SP),HL
LD (0B7B9H),HL
POP HL
RET
NIN LD HL,ZEI4 ;UP 21 NIN
;
SIN PUSH HL ;UP 1F SIN
LD HL,(0B7BBH)
EX (SP),HL
LD (0B7BBH),HL
POP HL
RET
BRKT CALL KBDS ;UP 2A BRKT
BRKT1 CP 3
SCF
RET Z
CP 13H
SCF
CCF
RET NZ
CALL RESFL
CALL KBD1
JR BRKT1
KBD BIT 6,(IX+8) ;UP 4 KBD
KBD1 PUSH HL
PUSH DE
PUSH BC
JR NZ,KBD8
KBD2 CALL CUCP
KBD3 CALL KBDZ
JR NC,KBD3
CALL CUCP
KBD4 BIT 5,(IX+8)
LD D,A
CALL NZ,RCLICK
LD A,D
LD HL,0B7A2H
BIT 4,M
CALL NZ,CRT
JR NZ,KBD2
KBD5 CP 1BH
JR NZ,KBD6
SET 4,M
JR KBD2
KBD6 CP 0F1H
JP C,POPS3
SET 6,(IX+8)
SUB 0F0H
LD B,A
LD HL,0B900H
KBD7 LD A,M
AND A
INC HL
JR NZ,KBD7
DJNZ KBD7
JR KBD9
KBD8 CALL BRKT
JR C,KBD10
LD HL,(0B7D1H)
KBD9 LD A,M
INC HL
LD (0B7D1H),HL
AND A
JP NZ,POPS3
KBD10 RES 6,(IX+8)
JR KBD2
;*** CCP ***
INLIN CALL INTB
CALL OCHR
CP 0DH
JR Z,ILN1
CP 3
JR NZ,INLIN
SCF
ILN1 PUSH AF
CALL CRLF
LD DE,(0B7A0H)
CP D
JR NZ,ILN2
LD A,(0B79FH)
LD D,A
ILN2 DEC D
PUSH HL
CALL DABR
EX DE,HL
POP HL
POP AF
RET
HLHX LD A,H ;UP 1A HLHX
CALL AHEX
LHSPCE LD A,L
AHSPCE CALL AHEX
;
SPAC LD A,20H ;UP 2B SPAC
SPAC0 JP OCHR
ERRM CALL OSTR ;UP 19 ERRM
DEFM 'Error'
DEFB 7
DEFB 0
;
CRLF CALL OSTR ;UP 2C CRLF
DEFB 0DH
DEFB 0AH
DEFB 0
RET
HOME LD A,10H ;UP 2D HOME
JR SPAC0
CLLN LD A,2
JR SPAC0
AHEX PUSH AF ;UP 1C AHEX
RRA
RRA
RRA
RRA
CALL AHEX1
POP AF
AHEX1 AND 0FH
ADD 90H
DAA
ADC 40H
DAA
JR SPAC0
HLDE CALL HLDE1 ;UP 1B HLDE
HLDE1 CALL HLHX
EX DE,HL
RET
RHEX0 INC DE
;
RHEX LD A,(DE) ;UP 18 RHEX
CP 20H
JR Z,RHEX0
XOR A
LD HL,0B798H
LD M,A
DEC HL
LD M,A
DEC HL
LD M,A
RH1 LD A,(DE)
OR A
RET Z
CP 20H
RET Z
SUB 30H
RET C
CP 0AH
JR C,RH2
SUB 7
AND 0DFH
CP 0AH
RET C
CP 10H
CCF
RET C
RH2 INC DE
INC M
INC HL
RLD
INC HL
RLD
DEC HL
DEC HL
JR Z,RH1
DEC DE
SCF
RET
GARG LD BC,0B781H ;UP 22 GARG
XOR A
LD (BC),A
INC DE
GARG1 CALL RHEX
RET C
LD A,M
OR A
RET Z
INC HL
INC BC
LD A,M
LD (BC),A
INC HL
INC BC
LD A,M
LD (BC),A
LD L,81H
INC M
LD A,M
ADD 0F5H
JR NC,GARG1
RET
;*** Systeminit ***
SYSI LD HL,KCTAB0
LD D,5+2 ;+2:V.24-Interf.
CALL INIMEI
LD DE,0B799H
LD BC,STBL1
LDIR
LD E,0D8H
LD C,STBL2
LDIR
LD A,1
;
SIXD DI ;UP 31 SIXD
LD HL,ISRTAB
LD (0B7D7H),A
LD I,A
LD E,0E4H
LD D,A
LD BC,0CH
LDIR
PUSH DE
LD E,(IX+4)
POP IX
LD (IX+4),E
LD (IX+8),88H
LD (IX+9),7FH
LD (IX+0EH),KTAB
LD (IX+0FH),0FDH
LD D,4
LD HL,KCTAB1
CALL INIME
LD HL,103H
LD (0B800H),HL
SIXD2 LD A,(IX+7)
AND 1FH
LD (IX+7),A
SIXD3 LD A,0FFH
OUT 89H
LD (IX+5),0
LD (IX+6),0B7H
EI
JP RESFL
INIEA PUSH BC ;UP 43 INIEA
LD C,M
INC HL
LD B,M
INC HL
OTIR
POP BC
RET
INIMEI IM 2
INIME CALL INIEA ;UP 44 INIME
DEC D
JR NZ,INIME
RET
;*** Tape-Routinen ***
DEFW 7F7FH ;>SAVE<
DEFM 'SAVE'
DEFB 1
;
CP 2
JP C,ERRM
SAVE1 CALL OSTR
DEFM 'Name :'
DEFB 0
CALL INLIN
RET C
LD HL,6
ADD HL,DE
;
SAVE LD DE,0B700H ;UP 36 SAVE
LD BC,11
LDIR
XOR A
LD (DE),A
LD HL,0B781H
LD E,10H
LD C,15H
LDIR
CALL NBWI
RES 5,(IX+7)
LD HL,(0B782H)
SAVE0 LD (IX+5),L
LD (IX+6),H
LD DE,80H
ADD HL,DE
LD DE,(0B784H)
SBC HL,DE
CCF
JP C,NBW1
CALL NBW
JP C,CRO0
JR SAVE0
LARG LD BC,(0B786H) ;UP 15 LARG
LD DE,(0B784H)
LD HL,(0B782H)
LD A,(0B781H)
RET
NBL1 CALL OSTR
DEFM '???'
DEFB 0
NBL2 JP CMBI ;END CSRO
DEFW 7F7FH ;>VERIFY<
DEFM 'VERIFY'
DEFB 1
;
VERIFY RES 0,(IX+7) ;UP 11 VERIFY
JR LOAD0
DEFW 7F7FH ;>LOAD<
DEFM 'LOAD'
DEFB 1
;
LOAD SET 0,(IX+7) ;UP 10 LOAD
;
LOAD0 CALL IMBII
CALL NBR
RES 5,(IX+7)
LOAD1 JR C,NBL2 ;>CSRO
LD HL,0B700H
LD B,11
LOADN LD A,M
INC HL
CALL CRT
DJNZ LOADN
CALL SPAC
BIT 0,(IX+7)
JR Z,LOAD4
LD L,10H
LD A,M
SUB 2
CP 8 ;A=0..7
JR NC,NBL1
RLCA
RLCA
LD H,A
LD A,(IX+7)
AND 3
OR H
LD (IX+7),A
LD BC,(0B715H)
LD DE,(0B713H)
LD HL,(0B711H)
LD A,(0B781H)
AND A
JR Z,LOAD3
PUSH BC
LD BC,(0B782H)
ADD HL,BC
EX DE,HL
ADD HL,BC
EX DE,HL
BIT 3,(IX+7)
JR NZ,LOAD2
EX (SP),HL
ADD HL,BC
EX (SP),HL
LOAD2 POP BC
LOAD3 LD (0B782H),HL
LD (0B784H),DE
LD (0B786H),BC
CALL HLDE
LOAD4 CALL CRLF
EX DE,HL ;Ziel=DE
LOAD5 CALL NBR
JR C,LOAD1 ;>CSRO
BIT 0,(IX+7)
JR Z,LOAD6
PUSH HL
SBC HL,DE
LD BC,80H
SBC HL,BC
ADD HL,BC
JR NC,BLC1
LD C,L
BLC1 LD HL,0B700H
LDIR
POP HL
LOAD6 INC (IX+2) ;FF?
JR NZ,LOAD5
;
CSRI CALL CMBI ;UP 0B CSRI
LD A,(IX+7)
RRA
RET NC ;bei VER.
AND 0EH
RES 0,(IX+7)
RET Z ;2 ARG
;
BIT 1,(IX+7) ;AutoSt.enable ?
JR Z,CSRI3
CSRI1 CALL OSTR
DEFM 'Run'
DEFB 0
CALL YESNO
JR Z,CSRI3
CP 'S'
RET NZ
LD A,3
LD (0B781H),A
CALL SAVE1 ;PROGR. COPY
JR CSRI1
CSRI3 LD HL,(0B786H)
JP (HL) ;AUTOSTART-ADR.
YESNO ;PA:Z=1 bei YES, RG A
CALL OSTR
DEFM '? (Y):'
DEFB 0
CALL INTB
PUSH AF
CALL OCHR
CALL CRLF
POP AF
RES 5,A
CP 'Y'
RET
NBR ;NewBlockRead
PUSH HL
LD L,4 ;4 Versuche
LD H,(IX+3)
NBR0 CALL BRKT
JR C,NBREND
CALL MBI
LD A,(IX+2)
PUSH AF
CP H
JR Z,NBR2
INC A ;FF?
JR NZ,NBR4
LD A,L
CP 4 ;4 Versuche
JR NZ,NBR4 ;Kein 1.Vers.
DEC H
JR Z,NBR41 ;01 erwartet
INC H
NBR2 POP AF
JR C,NBR5
BIT 5,(IX+7)
JR NZ,NBR3
CALL CBNRO
DEFM '> '
DEFB 0
NBR3 INC H
LD (IX+3),H
NBREND POP HL
RET
NBR41 INC H
NBR4 POP AF
CALL BNROST
DEFM '*'
DEFW 808H
DEFB 8
DEFB 0
JR NBR0
NBR5 LD H,A ;falls FF
DEC L
JR Z,NBR6
CALL BNROST
DEFM '? '
DEFB 7
DEFB 0
JR NBR0
NBR6 CALL BNROST
DEFM ' !'
DEFB 1EH ;CRNL
DEFB 0
JR NBR3
NBW ;NewBlockWrite
CALL BRKT
RET C
NBW1 LD BC,(0B7DAH) ;mit CY=1 !
BIT 5,(IX+7)
JR Z,NBW2
LD BC,500H
NBW2 JP C,CSRO
CALL MBOT
NBW3 CALL BNROST
DEFM '<'
DEFB 0DH
DEFB 0
RET
NBWI CALL ISROI
CALL CLLN
JR NBW3
;*** Monitor ***
DEFW 7F7FH ;>COLOR<
DEFM 'COLOR'
DEFB 1
;
COLOR PUSH AF
LD A,1FH
AND L
RLA
RLA
RLA
LD L,A
POP AF
CP 2
LD A,E
JR NC,COL1
LD A,(0B7A3H)
COL1 AND 7
OR L
COL2 LD (0B7A3H),A
RET
ESC2 LD A,(0B7A3H) ;Blinken on/off
XOR 80H
JR COL2
DPMEMO CALL HLHX
PUSH HL
LD B,C
DPM1 LD A,M
INC HL
CALL AHSPCE
DJNZ DPM1
POP HL
LD B,C
LD A,9
CALL OCHR
DPM2 LD A,M
INC HL
CALL CSTBT
DJNZ DPM2
RET
CSTBT PUSH HL ;UP 42 CSTBT
LD HL,0B7A2H
SET 3,M
CALL OCHR
RES 3,M
POP HL
RET
DEFW 7F7FH ;>DISPLAY<
DEFM 'DISPLAY'
DEFB 1
;
DISP SUB 3 ;UP 3B DISP
JR NC,DISP1
LD C,8
INC A
JR Z,DISP1
LD E,4
DISP1 PUSH DE
DISP2 CALL DPMEMO
CALL CRLF
CALL BRKT
JR C,DISP3
DEC E
JR NZ,DISP2
CALL INTB
DISP3 POP DE
CP 3
RET Z
CP 13H
JR NZ,DISP1
JR MO1
DEFW 7F7FH ;>MODIFY<
DEFM 'MODIFY'
DEFB 1
;
LD C,E
CP 2
JR NC,MO1
MODI LD C,1 ;UP 2E MODI
MO1 CALL DPMEMO
LD A,5
LD (0B7A0H),A
CALL INLIN
RET C
PUSH HL
CALL RHEX
LD A,M
POP HL
JR C,MO10
AND A
JR Z,MO1
LD HL,(0B797H)
MO2 PUSH HL
CALL RHEX
LD A,M
AND A
INC HL
LD A,M
POP HL
JR Z,MO4
MO3 LD M,A
INC HL
MO4 LD A,(DE)
CP '.'
RET Z
CP ','
JR NZ,MO5
INC DE
LD A,(DE)
INC DE
JR MO3
MO5 CP ':'
JR NZ,MO6
DEC HL
JR MO1
MO6 CP '/'
JR NZ,MO7
INC DE
CALL RHEX
JR C,MO10
LD HL,(0B797H)
JR MO1
MO7 CP 27H ;Hochkomma
JR NZ,MO9
INC DE
MO8 LD A,(DE)
INC DE
AND A
JR Z,MO1
CP 27H ;Hochkomma
JR Z,MO4
LD M,A
INC HL
JR MO8
MO9 AND A
JR Z,MO1
CP 20H
JR Z,MO2
MO10 CALL ERRM
JR MO1
DEFW 7F7FH ;>WINDOW<
DEFM 'WINDOW'
DEFB 1
;
AND A
JR Z,WINAK
DEC A
JR Z,WINAK0
CP 3
JR C,ERRM2
LD H,L
LD L,C
LD D,E
LD A,(0B788H)
LD E,A
LD A,(0B78AH)
JR NZ,WIN5
LD A,(0B79BH)
WIN5 CALL WININ
RET NC
ERRM2 JP ERRM
WININ0 LD A,(0B79BH) ;von BASIC
WININ PUSH AF ;UP 3C WININ
CALL PART
IAD21 JP C,IAD2
POP AF
PUSH DE
PUSH HL
CALL WCOPY
POP HL
POP DE
LD (0B79CH),HL
LD (0B79EH),DE
LD (0B7A0H),BC
RET
WINAK0 LD A,L
WINAK CALL WCOPY ;UP 3D WINAK
WINAK1 CALL WINANF ;von BASIC
RET C
INC HL
EX DE,HL
JR WCPY1
WINANF LD HL,0B79BH
LD A,M
ADD 0F6H
RET C
ADD A
LD E,A
ADD A
ADD A
ADD E
LD E,A
LD D,0B9H
AND A
RET
PART ADD 0F6H
RET C
LD A,D
SUB 1
RET C
ADD H
RET C
ADD 0E0H
RET C
LD A,E
SUB 1
RET C
ADD L
RET C
ADD 0D8H
RET
WCOPY PUSH AF
CALL WINANF
JR C,IAD21
POP AF
LD M,A
INC HL
WCPY1 LD BC,0AH
JPLD LDIR
OR A
RET
KDISP1 INC HL
KYDISP LD A,M
AND A
RET Z
CALL CSTBT
JR KDISP1
DEFW 7F7FH ;>KEY<
DEFM 'KEY'
DEFB 1
;
JR Z,KEYLI
LD A,L
;
KEY AND A ;UP 39 KEY
LD HL,0B900H
JR Z,KKILL
CP 0DH
RET NC
LD B,A
KEY1 LD A,M
INC HL
AND A
JR NZ,KEY1
DJNZ KEY1
CALL KYDISP
KEY2 PUSH AF
DEC HL
KEY3 POP AF
KEY4 CALL INTB
CP 13H
JP Z,CRLF
PUSH AF
LD B,0
DEC A
JR NZ,KEY5
LD A,M
AND A
JR Z,KEY3
LD D,H
LD E,L
PUSH HL
INC HL
LD A,9CH
SUB L
LD C,A
LDIR
POP HL
POP AF
CALL OCHR
JR KEY2
KEY5 LD A,(0B99AH)
AND A
JR NZ,KEY3
PUSH HL
LD A,9BH
SUB L
LD C,A
LD HL,0B99AH
LD DE,0B99BH
LDDR
POP HL
POP AF
INC HL
LD M,A
CALL CSTBT
JR KEY4
KKILL LD B,09CH
KKIL1 LD M,A
INC HL
DJNZ KKIL1
RET
KEYLI LD HL,0B900H ;UP 3A KEYLI
LD BC,0CF0H
KEYL0 INC C
CALL CLLN
LD A,C
CALL AHOSTR
DEFM ' :'
DEFB 0
CALL KDISP1
CALL CRLF
DJNZ KEYL0
RET
CUCP PUSH HL ;UP 25 CUCP
PUSH DE
PUSH AF
LD DE,(0B7A0H)
CALL DABR
JR C,CEND
LD A,M
CALL PADR1
OR A
JR NZ,CFARB
SET 5,L
SET 0,H
LD A,M
XOR 7FH
LD M,A
JR CEND
CFARB LD A,(DE)
CPL
LD (DE),A
SET 5,E
LD A,(DE)
CPL
BIT 7,(IX+8)
JR NZ,CFAB1
XOR 4
CFAB1 LD (DE),A
CEND POP AF
JR PUDEND
;*** Grafiktreiber ***
PUDE DEFB 3EH ;UP 2F PUDE
;
PUSE XOR A ;UP 30 PUSE
PUSH HL
PUSH DE
LD HL,(0B7D3H)
LD DE,(0B7D5H)
OR A
JR NZ,PUDEJP
CALL WTESTV
CALL NC,POINT
PUDEND POP DE
POP HL
RET
PUDEJP CALL WTESTV
JR C,PUDEND
PUSH BC
CALL BADR
LD B,A
LD C,M
CPL
AND C
LD M,A
LD A,B
AND C
LD A,(DE)
POP BC
JR PUDEND
LINE EXX ;UP 3E LINE
PUSH HL
PUSH DE
PUSH BC
LD DE,(0B788H)
LD HL,(0B784H)
EXX
CALL LARG
LD D,B
LD E,C
LINE1 XOR A
SBC HL,DE
JR NC,LINE2
ADD HL,DE
EX DE,HL
EXX
EX DE,HL
EXX
JR LINE1
LINE2 EXX
PUSH DE
LINE3 SBC HL,DE
JR NC,LINE4
ADD HL,DE
EX DE,HL
OR 1
JR LINE3
LINE4 PUSH HL
EXX
POP BC
PUSH HL
SBC HL,BC
POP HL
PUSH BC
JR NC,LINE5
EX (SP),HL
OR 2
LINE5 PUSH HL
LD B,H
LD C,L
EXX
POP BC
POP DE
LD H,B
LD L,C
SRL H
RR L
EXX
POP HL
EX DE,HL
INC BC
LINE6 CALL SHLDE
EXX
AND A
SBC HL,DE
JR NC,LINE7
ADD HL,BC
LINE7 EXX
BIT 1,A
JR NZ,VDE
JR NC,IHL
VDE BIT 0,A
INC DE
JR Z,IDE
DEC DE
DEC DE
IDE JR C,IHL
DEC HL
IHL CPI
JP PE,LINE6
;
CIREND POP BC
POP DE
POP HL
EXX
RET
CIRCLE EXX ;UP 3F CIRCLE
PUSH HL
PUSH DE
PUSH BC
LD A,(0B786H)
LD C,A
LD D,C
CALL MULT
LD H,B
LD L,A
LD D,H
LD E,L
LD A,C
LD B,0
SLA C
RL B
DEC BC
PUSH BC
LD BC,1
EXX
LD C,A
LD B,0
CIR1 CALL CIRUP1
CALL CIRUP1
EXX
AND A
SBC HL,BC
INC BC
INC BC
SBC HL,DE
ADD HL,DE
EXX
JR NC,CIR2
EXX
EX (SP),HL
EX DE,HL
AND A
SBC HL,DE
DEC DE
DEC DE
EX DE,HL
EX (SP),HL
EXX
DEC C
CIR2 INC B
LD A,C
CP B
JR NC,CIR1
POP BC
JR CIREND
CIRUP1 LD A,B
LD B,C
LD C,A
XOR A
LD D,A
LD HL,(0B784H)
PUSH HL
LD E,C
ADD HL,DE
CALL CIRUP2
XOR A
LD D,A
POP HL
LD E,C
SBC HL,DE
CIRUP2 PUSH HL
LD HL,(0B782H)
LD E,B
AND A
SBC HL,DE
POP DE
CALL SHLDE
PUSH DE
LD D,A
LD E,B
ADD HL,DE
ADD HL,DE
POP DE
;
SHLDE PUSH AF
CALL WTEST
JR C,ENDS
PUSH HL
PUSH DE
CALL POINT
POP DE
POP HL
ENDS POP AF
RET
POINT CALL BADR
PUSH DE
LD DE,(0B7D6H)
BIT 1,E
JR NZ,NOTPT
BIT 0,E
JR NZ,XORPT
OR M
XORPT1 BIT 2,E
LD M,A
LD A,E
POP DE
RET NZ
AND 0F8H
LD H,A
LD A,(DE)
AND 7
OR H
LD (DE),A
RET
NOTPT CPL
AND M
LD M,A
POP DE
RET
XORPT XOR M
JR XORPT1
BADR LD A,L
LD D,E
AND 7
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD L,H
ADD BITTAB
LD E,A
LD A,D
CPL
LD H,A
LD A,(0B7D8H)
LD D,A
LD A,(DE)
JP PADR
WTEST LD A,D
ADD 0FFH
RET C
WTESTV LD A,H
OR A
RET Z
ADD 0FEH
RET C
LD A,L
ADD 0C0H
RET
;*** Byteweise Tape-Routinen***
MBOUT LD E,D ;UP 38 MBOT
LD D,A
PUSH DE
PUSH BC
BIT 3,E
JR NZ,INITO
LD A,(0B7DCH)
INITO2 LD H,0B7H
LD L,A
LD M,D
INC A
BIT 6,E
JR NZ,CLOSEO
AND 7FH
LD (0B7DCH),A
JR NZ,POPS
BIT 1,(IX+7)
JR Z,KINITO
CALL NBWI
RES 1,(IX+7)
JR POPS
KINITO CALL NBW
JR NC,POPS
IOERRO CALL CRO0
IOERR LD HL,(0B7C9H)
CALL IRMOFF
JP (HL)
CLOSEO BIT 1,(IX+7)
PUSH AF
CALL NZ,NBWI
POP AF
CALL Z,NBW
SCF
CALL NBW1
POPS POP BC
POP DE
RES 3,E
RET
INITO SET 1,(IX+7)
LD A,M
CP 'U'+80H
JR NZ,INITO1
SET 5,(IX+7)
INITO1 PUSH DE
LD DE,0B700H
LD BC,11
LDIR
LD A,E
POP DE
JR INITO2
IOERRI CALL CMBI
JR IOERR
MBIN LD E,D ;UP 37 MBIN
PUSH DE
PUSH BC
BIT 6,E
JR NZ,CLOSI
BIT 3,E
JR NZ,INII
LD A,(0B7DCH)
OR A
LD L,A
CALL Z,NBR
JR C,IOERRI
BYTHOL LD H,0B7H
LD D,M
LD A,L
INC A
AND 7FH
LD (0B7DCH),A
LD A,D
POPS1 JR POPS
INII RES 1,(IX+7)
CALL IMBII
CALL NBR
JR C,IOERRI
LD DE,0B700H
LD B,11
LD A,(DE)
CP 'U'+80H
JR Z,INII1
RES 5,(IX+7)
INII1 ADD 29H
JR NC,INII2
LD A,(DE)
SUB 4
LD (DE),A
INC DE
LD (DE),A
INC DE
LD (DE),A
DEC DE
DEC DE
LD (35EH),A
INII2 LD A,(DE)
CALL CRT
CP M
JR Z,INII3
SET 1,(IX+7)
INII3 INC DE
INC HL
DJNZ INII2
CALL CRLF
BIT 1,(IX+7)
RES 1,(IX+7)
JR NZ,IOERRI
LD L,E
JR BYTHOL
CLOSI CALL CMBI
JR POPS1
;*** Sonstiges ***
ZKOUT LD A,M ;UP 45 ZKOUT
INC HL
AND A
RET Z
CALL OCHR
JR ZKOUT
SQR XOR A ;UP 40 SQR
DEC A
LD E,A
LD D,A
SQR1 INC A
INC DE
INC DE
SBC HL,DE
RET M
JR SQR1
MULT XOR A ;UP 41 MULT
LD B,8
RR D
MU1 JR NC,MU2
ADD C
MU2 RRA
RR D
DJNZ MU1
LD B,A
LD A,D
RET
DEFW 7F7FH ;>MODUL<
DEFM 'MODUL'
DEFB 1
;
MODUL PUSH DE ;UP 47 MODUL
LD L,A
MODUL1 XOR A
CALL MODU
LD A,H
INC A
CALL NZ,MODOUT
INC L
JR NZ,MODUL1
POP DE
RET
; f}r PWRON
MODSW LD DE,UMODL ;IO-Modul
CALL MOSW
LD (0B7E1H),A
MODSW1 LD DE,43F6H ;64K
CALL MOSW
LD E,0F4H ;16K
OR A
CALL Z,MOSW
LD DE,0C1FBH ;8K ROM
MOSW LD BC,680H
MOSW1 XOR A
INC B
RET Z
LD A,B
CP (IX+4)
JR Z,MOSW1
IN A,(C)
CP E
JR NZ,MOSW1
LD A,1
MOSW2 LD H,0B8H
LD L,B
OUT (C),D
LD M,D
RET
;*** Druckertreiber (V24) ***
PRZK ;folgt TAB, 1.Byte L{nge
EX (SP),HL
LD B,M
INC HL
PRZK1 LD A,M
INC HL
CALL PRINT
DJNZ PRZK1
EX (SP),HL
RET
ECHO PUSH AF
PUSH HL
LD HL,0B7A2H
BIT 4,M
CALL CRT
JR NZ,ECH4
BIT 3,M
JR Z,ECH2
AND 7FH
CP 20H
JR C,ECH1
CP 7FH
JR NZ,ECH4
ECH1 LD A,'_'
JR ECH3
ECH2 CP 9 ;CUR
JR NZ,ECH3
LD A,' '
ECH3 CP 0FH ;SH+CLR
ECH4 POP HL
JR Z,PRT ;POP+RET
DEFB 0EDH ;NOP-BYTE
;
PRINT PUSH AF
NOP ;Freihalte-Bytes
NOP ; f. CENTR.Vers.
WT CALL BRKT
JR C,PRT
IN A,SIO+2
BIT 2,A
JR Z,WT
POP AF
OUT SIO
RET
NEG
NEG
PRT POP AF
RET
SHCLX ;Reaktion auf SH+CLR
LD A,(0B7E1H)
DEC A
JR NZ,HCPX
LD HL,(0B7B9H)
LD A,M
OR A
JR Z,SHX1
LD HL,PRINT
LD BC,ZEI0
JR SHX2
SHX1 LD HL,ECHO
LD BC,ZEI2
SHX2 LD (0B7BEH),HL
LD (0B7B9H),BC
RET
ESC6 LD A,(0B7E1H) ;HCOPY
OR A
RET Z
JR HCPX0
HCPX CP 2
RET NC
HCPX0 PUSH DE
LD HL,0
HCPX1 CALL PRZK
DEFB 9
DEFB 1BH
DEFB 'J' ;Vorschub 1/9"
DEFB 24
DEFB 0DH
DEFB 1BH
DEFB '*' ;Plottergrafik
DEFB 5
DEFW 140H
HCPX2 PUSH HL
CALL PADR
CALL RDX
LD C,8
HCPX3 LD HL,0B78EH ;ARG7
LD B,8
HCPX4 RL M
INC L
RLA
DJNZ HCPX4
LD L,0A2H
BIT 2,M
JR Z,HCPX5
CPL ;negiert
HCPX5 CALL PRINT
DEC C
JR NZ,HCPX3
POP HL
INC L
LD A,L
CP 40
JR NZ,HCPX2
LD L,0
LD A,H
ADD 8
LD H,A
JR NC,HCPX1
CALL PRZK
DEFB 2
DEFW 0D0AH
POP DE
RET
RDX ;liest Zeichen nach ARG7
LD DE,0B78EH
LD BC,80H
PUSH HL
CALL RDX1
POP HL
SET 5,L
RDX1 LD A,4
RDX2 LDI
ADD HL,BC
INC BC
DEC A
JR NZ,RDX2
RET
DEFW 7F7FH ;>V24><
DEFM 'V24'
DEFB 1
;
LD A,L
LD (0B7E1H),A
RET
DEFW 7F7FH ;>SEND<
DEFM 'SEND'
DEFB 1
;
RET Z
LD B,A
LD HL,0B782H
SND1 LD A,M
INC HL
INC HL
CALL PRINT
DJNZ SND1
RET
DEFW 7F7FH ;>USER<
DEFM 'USER'
DEFB 1
;
CP 3
JP Z,JPLD
DEC A
JP NZ,ERRM
JP (HL)
DEFW 7F7FH
DEFM 'SEEK'
DEFB 1
CP 3
RET C
EX DE,HL
SBC HL,DE
LD B,H
LD C,L
EX DE,HL
SCHL LD DE,0B786H
LD A,(DE)
CPIR
JP PO,CRLF
PUSH BC
PUSH HL
LD A,(0B781H)
SUB 3
LD B,A
JR Z,GEF
NBYT INC DE
INC DE
LD A,(DE)
CP M
INC HL
JR NZ,NGEF
DJNZ NBYT
GEF POP HL
POP BC
DEC HL
CALL HLHX
INC HL
CALL BRKT
JP C,CRLF
DEFB 11H
NGEF POP HL
POP BC
JR SCHL
;*** Tabellen ***
ESCTAB DEFW ASC5
DEFW ESC1
DEFW ESC2
DEFW ESC3
DEFW ESC4
DEFW MODUL
DEFW ESC6
DEFW ESC7
DEFW ASC6
DEFW ESCF
DEFW MOT
SUTAB DEFW CRT ;0
DEFW MBOT ;1
DEFW 0B7BDH ;UOUT 1
DEFW 0B7C3H ;UOUT 2
DEFW KBD ;4
DEFW MBI ;5
DEFW 0B7C0H ;USIN 1
DEFW 0B7C6H ;USIN 2
DEFW ISRO ;8
DEFW CSRO ;9
DEFW ISRI ;0A
DEFW CSRI ;0B
DEFW KBDS ;0C
DEFW BYE ;0D
DEFW KBDZ ;0E
DEFW COLOR ;0F
DEFW LOAD ;10
DEFW VERIFY ;11
DEFW LOOP ;12
DEFW NORM ;13
DEFW WAIT ;14
DEFW LARG ;15
DEFW INTB ;16
DEFW INLIN ;17
DEFW RHEX ;18
DEFW ERRM ;19
DEFW HLHX ;1A
DEFW HLDE ;1B
DEFW AHEX ;1C
DEFW ZSUCH ;1D
DEFW SOUT ;1E
DEFW SIN ;1F
DEFW NOUT ;20
DEFW NIN ;21
DEFW GARG ;22
DEFW OSTR ;23
DEFW OCHR ;24
DEFW CUCP ;25
DEFW MODU ;26
DEFW JUMP ;27
DEFW LDMA ;28
DEFW LDAM ;29
DEFW BRKT ;2A
DEFW SPAC ;2B
DEFW CRLF ;2C
DEFW HOME ;2D
DEFW MODI ;2E
DEFW PUDE ;2F
DEFW PUSE ;30
DEFW SIXD ;31
DEFW DABR ;32
DEFW TCIF ;33
DEFW PADR ;34
DEFW TON ;35
DEFW SAVE ;36
DEFW MBIN ;37
DEFW MBOUT ;38
DEFW KEY ;39
DEFW KEYLI ;3A
DEFW DISP ;3B
DEFW WININ ;3C
DEFW WINAK ;3D
DEFW LINE ;3E
DEFW CIRCLE ;3F
DEFW SQR ;40
DEFW MULT ;41
DEFW CSTBT ;42
DEFW INIEA ;43
DEFW INIME ;44
DEFW ZKOUT ;45
DEFW MENU ;46
CRTTAB DEFW DUMMY
DEFW CLEAR
DEFW DELLN
DEFW DUMMY ;BRK
DEFW DUMMY
DEFW ASC5 ;Tab
DEFW ASC6 ;Color
DEFW BEL
DEFW CUL
DEFW CUR
DEFW CUD
DEFW CUU
DEFW CLS
DEFW CRN
DEFW DUMMY
DEFW HCOPY
DEFW HOMEPG
DEFW PAGE
DEFW SCROL
DEFW DUMMY ;STOP
DEFW CLICK
DEFW DUMMY
DEFW SHLOCK
DEFW DUMMY
DEFW CEL
DEFW CRN ;CCR
DEFW INS
DEFW ESC
DEFW DUMMY ;LIST
DEFW DUMMY ;RUN
DEFW CRNL ;CONT
DEFW DEL
KTAB DEFM 'Ww'
DEFM 'Aa'
DEFM '2"'
DEFW 1908H
DEFW 0C10H
DEFM '-='
DEFW 0F8F2H
DEFM 'Yy'
DEFM 'Ee'
DEFM 'Ss'
DEFM '3#'
DEFM '^]'
DEFW 0F01H
DEFM ':*'
DEFW 0F9F3H
DEFM 'Xx'
DEFM 'Tt'
DEFM 'Ff'
DEFM '5%'
DEFM 'Pp'
DEFW 21FH
DEFW 4030H
DEFW 0FBF5H
DEFM 'Vv'
DEFM 'Uu'
DEFM 'Hh'
DEFW 2737H
DEFM 'Oo'
DEFW 141AH
DEFM '9)'
DEFW 303H
DEFM 'Nn'
DEFM 'Ii'
DEFM 'Jj'
DEFM '8('
DEFM ' ['
DEFM 'Kk'
DEFM ',<'
DEFW 1B13H
DEFM 'Mm'
DEFM 'Zz'
DEFM 'Gg'
DEFM '6&'
DEFW 51BH ;T.nicht vorh.
DEFM 'Ll'
DEFM '.>'
DEFW 0FCF6H
DEFM 'Bb'
DEFM 'Rr'
DEFM 'Dd'
DEFM '4$'
DEFM '_\'
DEFM '+;'
DEFM '/?'
DEFW 0FAF4H
DEFM 'Cc'
DEFM 'Qq'
DEFW 1616H
DEFM '1!'
DEFW 120AH
DEFW 110BH
DEFW 1809H
DEFW 0F7F1H
DEFW 0D0DH
ISRTAB DEFW ISRPA
DEFW ISRPB
DEFW INTEND
DEFW ISRC1
DEFW ISRC2
DEFW ISRC3
KCTAB0:
DEFB 88H ;PIO A D
DEFB 1 ;Anz.
DEFB 1EH ;/NMI=H!
;
DEFB CTC ;SIO-CTC
DEFB 2
DEFB 47H ;9600 Bd
DEFB 5BH
;
DEFB SIO+2 ;Drucker SIO
DEFB 6 ;Takt *1
DEFB 4 ;8 Datenbits
DEFB 4 ;1 Stopbit
DEFB 3 ;keine Parit{t
DEFB 20H
DEFB 5
DEFB 6AH
KCTAB1:
DEFB 8AH ;PIO A C
DEFB 3 ;Anz.
DEFB 0E4H ;I-Vektor
DEFB 0FH ;Byteout
DEFB 3 ;DI
;
DEFB 8BH ;PIO B C
DEFB 3 ;Anz.
DEFB 0E6H ;I-Vektor
DEFB 0FH ;Byteout
DEFB 83H ;EI
;
DEFB 8CH ;CTC 0
DEFB 1 ;Anz.
DEFB 0E8H ;I-Vektor
;
DEFB 8EH ;CTC 2
DEFB 2 ;Anz.
DEFB 47H ;Z{hler,DI
DEFB 0CH ;Blink-ZK
SYSTAB DEFW SHCLX ;HCADR
DEFB 0 ;WINNR
DEFW 0 ;WINON
DEFW 2028H ;WINLG
DEFW 0 ;CURSO
DEFB 0 ;STBT
DEFB 39H ;COLOR
DEFW SCRLPG ;WEND
DEFW 0EE00H ;CCTL 0
DEFW 0FE00H ;CCTL 1
DEFW 0EE00H ;CCTL 2
DEFW 0FE00H ;CCLT 3
DEFW 01C4H ;SYSP
DEFW SUTAB ;SUTAB
DEFW CRTTAB ;CTAB
OUT (C),A ;JUMP IN NEUES
JP 0F012H ; CAOS
DEFW ZEI0 ;OUTAB
DEFW ZEI4 ;INTAB
JP PRINT ;USER OUT 2
JP DUMMY ;USER IN 2
JP DUMMY ;USER OUT 3
JP DUMMY ;USER IN 3
DEFW 0DC82H ;ZEIG. IO ERROR
STBE1 ;
DEFB 0FDH ;H-Teil Bittab
DEFM '%' ;Prompter
DEFW 0A0H ;Vortonl{nge
DEFB 0 ;Byte-Z{hler
DEFW ESCTAB
DEFB 11 ;L{nge ESC-TAB.
DEFB 5 ;COUNT
STBE2 ;
;
STBL1 EQU STBE1-SYSTAB
STBL2 EQU STBE2-STBE1
BITTAB DEFB 80H
DEFB 40H
DEFB 20H
DEFB 10H
DEFB 08H
DEFB 04H
DEFB 02H
DEFB 01H
;
;
; END.
@ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ
Detected encoding: ANSI (CP1252) | 4
|
|