CF3 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 DE,HL
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
CALL JUMPUP
JR SYS1
SYS: LD C,88H
IN A,(C)
OR 81H
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
;Floppy-Ansprung bei alter SUTAB!!!
LD BC,0FC80H
IN A,(C)
CP 0A7H
JR NZ,NEWO3
OUT (C),A
LD BC,82F3H
OUT (C),A
LD B,80H
LD A,41H
OUT (C),A
LD D,0FFH ;TimeOut-Wert
NEWO1: IN A,(C)
RLA
JR C,NEWO3
OR A
JR Z,NEWO3
DEC E
JR NZ,NEWO1
DEC D
JR NZ,NEWO1
LD BC,0FC80H
CALL JUMPUP
INC A ;A=1
LD (0B781H),A
XOR A
LD HL,SYSTB1
LD DE,0B7E5H
PUSH BC
LD BC,5
LDIR
POP BC
LD HL,0F15CH ;LOOP
PUSH HL ;vom
JP 0B7E5H ;Grundger{t
NEWO3: 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 dx *'
DEFB 0
DEFW 0
DEFW 0 ;4 freie Bytes
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 A,(IX+8) ;F-Taste
AND 40H ;durchreichen
OR 88H
LD (IX+8),A
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
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)
;*** 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
SYSTB1: 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.
øý
BITTAB:
BITTAB: DEFB 80H
DEFB 40H
DEFB 20H
DEFB 10H
DEFB 08H
DEFB 04H
DEFB 02H
DEFB 01H
;
;
; END.
øý
BITTAB:
Detected encoding: ANSI (CP1252) | 4
|
|