Monitor 2.02

 AS V1.42 Beta [Bld 64] - source file z1013riesa.asm - page 1 - 12/15/2011 10:24:49

       1/       0 :                     	page	0
       2/       0 :                     	CPU	z80
       3/       0 :                     
       4/       0 :                     ;Z1013-MONITOR 2.02, A.2
       5/       0 :                     ;reass: 1988-1990 Volker Pohlers, Lomonossowallee 41/81, Greifswald, 2200
       6/       0 :                     ;basierend auf GENS3M-Listing des 2.02-Monitors von C.Fischer/Ilmenau
       7/       0 :                     ;Fassung für den Arnold-Assembler und vielfach erweiterte Kommentare
       8/       0 :                     ;Volker Pohlers, Sanitz, 23.04.2004
       9/       0 :                     ;letzte Änderung 07.12.2011
      10/       0 :                     
      11/       0 :                     ;
      12/       0 :                     ;gewünschten Monitortyp auskommentieren
      13/       0 :                     ;
      14/       0 : =Z1013_202          MONTYP	EQU	"Z1013_202"
      15/       0 :                     ;MONTYP	EQU	"Z1013_A2"
      16/       0 :                     
      17/       0 :                     ;die wichtigsten Unterschiede A2 <-> 2.02
      18/       0 :                     ;- kein H- und A- und F-Kommandos
      19/       0 :                     ;- andere Adressen Windows-Speicher
      20/       0 :                     ;- andere INKEY-Routine und auch INCH-Routine!
      21/       0 :                     ;- KDO mit RST-Aufrufen programmiert, damit Verschiebung aller Routinen des Monitors!
      22/       0 :                     
      23/       0 :                     ; Makros
      24/       0 :                     hi              function x, (x>>8) & 0ffh	; High-Byte
      25/       0 :                     lo              function x, x & 0ffh		; Low-Byte
      26/       0 :                     
      27/       0 :                     ;
      28/       0 :                     ;RAM-Zellen
      29/       0 :                     ;
      30/       0 : =3H                 R20BT:	EQU	00003H			;Nummer des RST20-Calls
      31/       0 : =4H                 LAKEY:	EQU	00004H			;letztes Zeichen von Tastatur
      32/       0 : =BH                 BPADR:	EQU	0000BH			;Breakpointadresse
      33/       0 : =DH                 BPOPC:	EQU	0000DH			;Operandenfolge bei Breakpoint
      34/       0 : =13H                DATA:	EQU	00013H			;Adresse bei INHEX; intern f. INKEY b. A2
      35/       0 :                     ;SHILO:	EQU	00015H			;
      36/       0 : =16H                SOIL:	EQU	00016H			;Beginn Eingabezeile
      37/       0 : =1BH                ARG1:	EQU	0001BH			;1. Argument
      38/       0 : =1DH                ARG2:	EQU	0001DH			;2. Argument
      39/       0 : =1FH                BUFFA:	EQU	0001FH			;vom Cursor verdecktes Zeichen
      40/       0 : =20H                RST20:	EQU	00020H			;RST 20H
      41/       0 : =23H                ARG3:	EQU	00023H			;3. Argument
      42/       0 : =25H                SOIL2:	EQU	00025H			;Rest Eingabezeile
      43/       0 : =2BH                CUPOS:	EQU	0002BH			;aktuelle Cursorposition
      44/       0 : =33H                LSYNC:	EQU	00033H			;Kenntonlaenge
      45/       0 : =38H                RST38:	EQU	00038H			;RST 38H
      46/       0 : =>FALSE             	IF MONTYP == "Z1013_A2"
      47/       0 :                     WINDL:	EQU	00035H			;Windowlaenge
      48/       0 :                     KYBTS:	equ	00037h			;Tastaturroutinenzelle (Bit 4=Repeat)
      49/       0 :                     WINDA:	EQU	0003BH			;Windowanfang
      50/       0 :                     WINDE:	EQU	0003DH			;Windowende+1
      51/       0 : =>TRUE              	ELSE
      52/       0 : =27H                KYBTS:	EQU	00027H			;Tastaturroutinenzelle (0=ASCII,80h=Grafik)
      53/       0 : =47H                WINDL:	EQU	00047H			;Windowlaenge
      54/       0 : =49H                WINDA:	EQU	00049H			;Windowanfang
      55/       0 : =4BH                WINDE:	EQU	0004BH			;Windowende+1
      56/       0 : [46]                	ENDIF
      57/       0 : =4DH                REGBR:	EQU	0004DH			;Registerrettebereich
      58/       0 : =5BH                REGAF:	EQU	0005BH			;Register AF
      59/       0 : =61H                REGPC:	EQU	00061H			;Register PC
      60/       0 : =63H                REGSP:	EQU	00063H			;Userstack
      61/       0 : =66H                NMI:	EQU	00066H
      62/       0 : =69H                NBYTE:	EQU	00069H			;Operand bei NEXT
      63/       0 : =6AH                SPADR:	EQU	0006AH			;SP-Zwischenspeicher
      64/       0 : =6CH                FBANZ:	EQU	0006CH			;Zwsp. Anz. Suchbytes bei FIND
      65/       0 : =90H                USRSK:	EQU	00090H			;Userstack
      66/       0 : =B0H                SYSSK:	EQU	000B0H			;Systemstack
      67/       0 : =B0H                USRKD:	EQU	SYSSK
      68/       0 :                     ;Bildschirm
      69/       0 : =EC00H              BWS:	EQU	0EC00H			;Beginn BWS
      70/       0 : =20H                BWSROW	EQU	32			;Anzahl Zeilen
      71/       0 : =20H                BWSCOL	EQU	32			;Anzahl Zeichen/Zeile
      72/       0 : =400H               BWSSZ	EQU	BWSROW*BWSCOL
      73/       0 :                     ;
      74/       0 :                     ;Markenvereinbarungen
      75/       0 :                     ;
      76/       0 : =CH                 CLS:	EQU	0CH
      77/       0 : =DH                 CR:	EQU	0DH
      78/       0 : =1BH                ESC:	EQU	27
      79/       0 : =1EH                NL:	EQU	1EH
      80/       0 : =AH                 LF:	EQU	0AH
      81/       0 :                     ;
      82/       0 :                     ;PIO
      83/       0 : =0H                 PIOAD	equ	00h 			; PIO A User
      84/       0 : =1H                 PIOAC	equ	01h
      85/       0 : =2H                 PIOBD	equ	02h			; PIO B, Bit0..4 Tastaturzeile
      86/       0 : =3H                 PIOBC	equ	03h			; Bit5->AB0 in, Bit6->TB in, Bit7->TB out
      87/       0 : =8H                 KEYP	equ	08h			; Port Ausgabe Tastaturspalte
      88/       0 :                     ;
      89/       0 :                     ; Makros für Systemaufrufe über RST 20h
      90/       0 :                     ;
      91/       0 :                     ROUTC:	MACRO
      92/       0 :                     	RST	20H
      93/       0 :                     	DB	0			; OUTCH
      94/       0 :                     	ENDM
      95/       0 :                     RINCH:	MACRO
      96/       0 :                     	RST	20H
      97/       0 :                     	DB	01h			; INCH
      98/       0 :                     	ENDM
      99/       0 :                     RPRST:	MACRO
     100/       0 :                     	RST	20H
     101/       0 :                     	DB	02h			; PRST
     102/       0 :                     	ENDM
     103/       0 :                     RINHX:	MACRO
     104/       0 :                     	RST	20H
     105/       0 :                     	DB	03h			; INHEX
     106/       0 :                     	ENDM
     107/       0 :                     RINKY:	MACRO
     108/       0 :                     	RST	20H
     109/       0 :                     	DB	04h			; INKEY
     110/       0 :                     	ENDM
     111/       0 :                     RINLN:	MACRO
     112/       0 :                     	RST	20H
     113/       0 :                     	DB	05h			; INLIN
     114/       0 :                     	ENDM
     115/       0 :                     ROTHX:	MACRO
     116/       0 :                     	RST	20H
     117/       0 :                     	DB	06h			; OUTHX
     118/       0 :                     	ENDM
     119/       0 :                     ROTHL:	MACRO
     120/       0 :                     	RST	20H
     121/       0 :                     	DB	07h			; OUTHL
     122/       0 :                     	ENDM
     123/       0 :                     ROTHS:	MACRO
     124/       0 :                     	RST	20H
     125/       0 :                     	DB	0Ch			; OTHLS
     126/       0 :                     	ENDM
     127/       0 :                     ROTDP:	MACRO
     128/       0 :                     	RST	20H
     129/       0 :                     	DB	0Dh			; OUTDP
     130/       0 :                     	ENDM
     131/       0 :                     ROTSP:	MACRO
     132/       0 :                     	RST	20H
     133/       0 :                     	DB	0Eh			; OUTSP
     134/       0 :                     	ENDM
     135/       0 :                     ;
     136/       0 :                     ;
     137/       0 :                     ;
     138/    F000 :                     	ORG	0F000H
     139/    F000 :                     ;
     140/    F000 :                     ;-------------------------------------------------------------------------------
     141/    F000 :                     ; Start
     142/    F000 :                     ;-------------------------------------------------------------------------------
     143/    F000 :                     
     144/    F000 : 18 0D               INIT:	JR	INIT2
     145/    F002 :                     ;Initialisierung
     146/    F002 : 21 4D 00            INIT1:	LD	HL,REGBR		;Registerrette-
     147/    F005 : 11 4E 00            	LD	DE,REGBR+1		;bereich loeschen
     148/    F008 : 36 00               	LD	(HL),0
     149/    F00A : 01 15 00            	LD	BC,0015H
     150/    F00D : ED B0               	LDIR
     151/    F00F : 31 B0 00            INIT2:	LD	SP,SYSSK		;System-Stack
     152/    F012 : =>TRUE              	IF MONTYP == "Z1013_202"
     153/    F012 : AF                  	xor	a			;Tastaturschalter
     154/    F013 : 32 27 00            	ld	(KYBTS), a		;auf ASCII
     155/    F016 : [152]               	ENDIF
     156/    F016 : 3E C3               	LD	A,0C3H			;JMP ...
     157/    F018 : 32 20 00            	LD	(RST20),A
     158/    F01B : 21 E8 F0            	LD	HL,RST1			;RST20 eintragen
     159/    F01E : 22 21 00            	LD	(RST20+1),HL
     160/    F021 : 3E CF               	LD	A,11001111b		;PIO Port B init.
     161/    F023 : D3 03               	OUT	PIOBC, A		;BIT-Mode 3
     162/    F025 : =>TRUE              	IF	MONTYP <> "Z1013_A2"
     163/    F025 : 3E 7F               	LD	A,01111111b		;BIT7-Ausgang
     164/    F027 : =>FALSE             	ELSE
     165/    F027 :                     	LD	A,01101111b		;Bit7 und Bit4 Ausg.
     166/    F027 : [162]               	ENDIF
     167/    F027 : D3 03               	OUT	PIOBC, A
     168/    F029 : 21 F2 F1            	LD	HL,MONTB		;System-RAM init.
     169/    F02C : 11 33 00            	LD	DE,LSYNC
     170/    F02F : 01 1A 00            	LD	BC,INCH-MONTB		;Laenge Tabelle
     171/    F032 : ED B0               	LDIR
     172/    F034 :                     ;Systemmeldung
     173/    F034 : (MACRO)             	RPRST
     173/    F034 : E7                          RST     20H
     173/    F035 : 02                          DB      02h                     ; PRST
     174/    F036 : 0C                  	DB	CLS
     175/    F037 : 0D                  	DB	CR
     176/    F038 : 0D                  	DB	CR
     177/    F039 : =>TRUE              	IF MONTYP == "Z1013_202"
     178/    F039 : 72 6F 62 6F 74 72   	DB	"robotron Z 1013/2.02"
                    6F 6E 20 5A 20 31 
                    30 31 33 2F 32 2E 
                    30 32 
     179/    F04D : =>FALSE             	ELSEIF MONTYP == "Z1013_A2"
     180/    F04D :                     	DB	"robotron Z 1013/A.2"
     181/    F04D : [177]               	ENDIF
     182/    F04D : 8D                  	DB	CR+80H
     183/    F04E :                     ;
     184/    F04E : 21 90 00            	LD	HL,USRSK		;User-Stack
     185/    F051 : 22 63 00            	LD	(REGSP),HL
     186/    F054 : ED 5E               	IM	2
     187/    F056 : 18 07               	JR	KDO2
     188/    F058 :                     ;
     189/    F058 :                     ;-------------------------------------------------------------------------------
     190/    F058 :                     ;Eingang Kommandomodus
     191/    F058 :                     ;-------------------------------------------------------------------------------
     192/    F058 :                     ;
     193/    F058 : 31 B0 00            KDO1:	LD	SP,SYSSK		;System-Stack
     194/    F05B : =>FALSE             	IF MONTYP == "Z1013_A2"
     195/    F05B :                     	RPRST
     196/    F05B : =>TRUE              	ELSE
     197/    F05B : CD A5 F2            	CALL	PRST7
     198/    F05E : [194]               	ENDIF
     199/    F05E : BF                  	DB	'?'+80H
     200/    F05F :                     KDO2:
     201/    F05F : =>FALSE             	IF MONTYP == "Z1013_A2"
     202/    F05F :                     	RINLN
     203/    F05F : =>TRUE              	ELSE
     204/    F05F : CD B3 F2            	CALL	INLIN			;Zeile eingeben
     205/    F062 : [201]               	ENDIF
     206/    F062 : ED 5B 16 00         	LD	DE,(SOIL)
     207/    F066 : CD CA F2            	CALL	SPACE			;Leerzeichen uebergehen
     208/    F069 : 47                  	LD	B,A			;B=1. Zeichen
     209/    F06A : 13                  	INC	DE
     210/    F06B : 1A                  	LD	A,(DE)
     211/    F06C : 4F                  	LD	C,A			;C=2. Zeichen
     212/    F06D : C5                  	PUSH	BC
     213/    F06E : 13                  	INC	DE
     214/    F06F : =>FALSE             	IF MONTYP == "Z1013_A2"
     215/    F06F :                     	RINHX
     216/    F06F : =>TRUE              	ELSE
     217/    F06F : CD F4 F2            	CALL	INHEX
     218/    F072 : [214]               	ENDIF
     219/    F072 : 20 05               	JR	NZ, KDO3
     220/    F074 : 1A                  	LD	A,(DE)
     221/    F075 : FE 3A               	CP	A, ':'			;die alten Werte nehmen ?
     222/    F077 : 28 0F               	JR	Z, KDO4
     223/    F079 : 22 1B 00            KDO3:	LD	(ARG1),HL		;neue Argumente holen
     224/    F07C : =>FALSE             	IF MONTYP == "Z1013_A2"
     225/    F07C :                     	RINHX
     226/    F07C : =>TRUE              	ELSE
     227/    F07C : CD F4 F2            	CALL	INHEX
     228/    F07F : [224]               	ENDIF
     229/    F07F : 22 1D 00            	LD	(ARG2),HL
     230/    F082 : =>FALSE             	IF MONTYP == "Z1013_A2"
     231/    F082 :                     	RINHX
     232/    F082 : =>TRUE              	ELSE
     233/    F082 : CD F4 F2            	CALL	INHEX
     234/    F085 : [230]               	ENDIF
     235/    F085 : 22 23 00            	LD	(ARG3),HL
     236/    F088 : C1                  KDO4:	POP	BC
     237/    F089 : 08                  	EX	AF, AF'
     238/    F08A : ED 53 25 00         	LD	(SOIL2),DE		;Anfang 4. Argument
     239/    F08E :                     ;Kommando (in Reg B) suchen
     240/    F08E : 21 B1 F0            	LD	HL,KDOTB		;in Kommandotabelle
     241/    F091 : 7E                  KDO5:	LD	A,(HL)
     242/    F092 : B8                  	CP	A, B
     243/    F093 : 28 11               	JR	Z, KDO6			;wenn gefunden
     244/    F095 : 23                  	INC	HL
     245/    F096 : 23                  	INC	HL
     246/    F097 : 23                  	INC	HL
     247/    F098 : B7                  	OR	A			;Tabellenende?
     248/    F099 : 20 F6               	JR	NZ, KDO5		;nein
     249/    F09B : 78                  	LD	A,B
     250/    F09C : FE 40               	CP	A, '@'			;"@"-Kommando?
     251/    F09E : 20 B8               	JR	NZ, KDO1		;nein -> Eingabefehler
     252/    F0A0 : 21 B0 00            	LD	HL,USRKD		;Suchen in "@"-Kdo.tab.
     253/    F0A3 : 41                  	LD	B,C
     254/    F0A4 : 18 EB               	JR	KDO5
     255/    F0A6 :                     ;
     256/    F0A6 : 23                  KDO6:	INC	HL
     257/    F0A7 : 5E                  	LD	E,(HL)
     258/    F0A8 : 23                  	INC	HL
     259/    F0A9 : 56                  	LD	D,(HL)
     260/    F0AA : EB                  	EX	DE,HL			;HL=UP-Adresse
     261/    F0AB : 08                  	EX	AF, AF'
     262/    F0AC : 01 5F F0            	LD	BC,KDO2			;Returnadresse
     263/    F0AF : C5                  	PUSH	BC
     264/    F0B0 : E9                  	JP	(HL)			;Sprung zur Routine
     265/    F0B1 :                     ;
     266/    F0B1 :                     KDOTB:
     267/    F0B1 : =>TRUE              	IF MONTYP == "Z1013_202"
     268/    F0B1 : 41                  	DB	"A"
     269/    F0B2 : C5 F6               	DW	A_KDO
     270/    F0B4 : [267]               	ENDIF
     271/    F0B4 : 42                  	DB	"B"
     272/    F0B5 : 87 F5               	DW	B_KDO
     273/    F0B7 : 43                  	DB	"C"
     274/    F0B8 : 77 F7               	DW	C_KDO
     275/    F0BA : 44                  	DB	"D"
     276/    F0BB : CE F4               	DW	D_KDO
     277/    F0BD : 45                  	DB	"E"
     278/    F0BE : 99 F5               	DW	E_KDO
     279/    F0C0 : =>TRUE              	IF MONTYP <> "Z1013_A2"
     280/    F0C0 : 46                  	DB	"F"
     281/    F0C1 : A2 F7               	DW	F_KDO
     282/    F0C3 : [279]               	ENDIF
     283/    F0C3 : 47                  	DB	"G"
     284/    F0C4 : B3 F5               	DW	G_KDO
     285/    F0C6 : =>TRUE              	IF MONTYP == "Z1013_202"
     286/    F0C6 : 48                  	DB	"H"
     287/    F0C7 : B8 F6               	DW	H_KDO
     288/    F0C9 : [285]               	ENDIF
     289/    F0C9 : 49                  	DB	"I"
     290/    F0CA : 02 F0               	DW	INIT1
     291/    F0CC : 4A                  	DB	"J"
     292/    F0CD : A5 F5               	DW	J_KDO
     293/    F0CF : 4B                  	DB	"K"
     294/    F0D0 : 0B F5               	DW	K_KDO
     295/    F0D2 : 4C                  	DB	"L"
     296/    F0D3 : F8 F3               	DW	CLOAD
     297/    F0D5 : 4D                  	DB	"M"
     298/    F0D6 : 25 F3               	DW	MEM
     299/    F0D8 : 4E                  	DB	"N"
     300/    F0D9 : 27 F7               	DW	N_KDO
     301/    F0DB : 52                  	DB	"R"
     302/    F0DC : DF F5               	DW	R_KDO
     303/    F0DE : 53                  	DB	"S"
     304/    F0DF : 69 F3               	DW	CSAVE
     305/    F0E1 : 54                  	DB	"T"
     306/    F0E2 : 1D F5               	DW	T_KDO
     307/    F0E4 : 57                  	DB	"W"
     308/    F0E5 : D1 F6               	DW	W_KDO
     309/    F0E7 : 00                  	DB	0
     310/    F0E8 :                     ;
     311/    F0E8 :                     ;-------------------------------------------------------------------------------
     312/    F0E8 :                     ;Eingang bei RST 20H
     313/    F0E8 :                     ;-------------------------------------------------------------------------------
     314/    F0E8 :                     ;
     315/    F0E8 : E3                  RST1:	EX	(SP),HL
     316/    F0E9 : F5                  	PUSH	AF
     317/    F0EA : 7E                  	LD	A,(HL)			;Datenbyte hinter Ruf holen
     318/    F0EB : 32 03 00            	LD	(R20BT),A		;und ablegen
     319/    F0EE : 23                  	INC	HL			;Returnadresse erhoehen
     320/    F0EF : F1                  	POP	AF
     321/    F0F0 : E3                  	EX	(SP),HL
     322/    F0F1 :                     ;
     323/    F0F1 : E5                  	PUSH	HL
     324/    F0F2 : C5                  	PUSH	BC
     325/    F0F3 : F5                  	PUSH	AF
     326/    F0F4 : 21 08 F1            	LD	HL,RSTTB
     327/    F0F7 : 3A 03 00            	LD	A,(R20BT)
     328/    F0FA : CB 27               	SLA	A
     329/    F0FC : 4F                  	LD	C,A
     330/    F0FD : 06 00               	LD	B,0
     331/    F0FF : 09                  	ADD	HL,BC			;HL=Adresse in Tab.
     332/    F100 : 7E                  	LD	A,(HL)
     333/    F101 : 23                  	INC	HL
     334/    F102 : 66                  	LD	H,(HL)
     335/    F103 : 6F                  	LD	L,A			;HL=UP-Adresse
     336/    F104 : F1                  	POP	AF
     337/    F105 : C1                  	POP	BC
     338/    F106 : E3                  	EX	(SP),HL			;Ansprung der
     339/    F107 : C9                  	RET				;Routine
     340/    F108 :                     ;
     341/    F108 : 1B F2               RSTTB:	DW	OUTCH			;DB 0
     342/    F10A : 0C F2               	DW	INCH			;DB 1
     343/    F10C : A5 F2               	DW	PRST7			;DB 2
     344/    F10E : F4 F2               	DW	INHEX			;DB 3
     345/    F110 : 30 F1               	DW	INKEY			;DB 4
     346/    F112 : B3 F2               	DW	INLIN			;DB 5
     347/    F114 : 01 F3               	DW	OUTHX			;DB 6
     348/    F116 : 1A F3               	DW	OUTHL			;DB 7
     349/    F118 : 69 F3               	DW	CSAVE			;DB 8
     350/    F11A : F8 F3               	DW	CLOAD			;DB 9
     351/    F11C : 25 F3               	DW	MEM			;DB 10
     352/    F11E : D1 F6               	DW	W_KDO			;DB 11
     353/    F120 : C7 F5               	DW	OTHLS			;DB 12
     354/    F122 : C4 F5               	DW	OUTDP			;DB 13
     355/    F124 : CF F5               	DW	OUTSP			;DB 14
     356/    F126 : 1D F5               	DW	T_KDO			;DB 15
     357/    F128 : B9 F2               	DW	INSTR			;DB 16
     358/    F12A : 0B F5               	DW	K_KDO			;DB 17
     359/    F12C : =>TRUE              	IF MONTYP <> "Z1013_A2"
     360/    F12C : B8 F6               	DW	H_KDO			;DB 18
     361/    F12E : C5 F6               	DW	A_KDO			;DB 19
     362/    F130 : [359]               	ENDIF
     363/    F130 :                     
     364/    F130 :                     ;
     365/    F130 :                     ;-------------------------------------------------------------------------------
     366/    F130 :                     ;Eingabe ein Zeichen von der Tastatur in A
     367/    F130 :                     ;-------------------------------------------------------------------------------
     368/    F130 :                     ;
     369/    F130 : =>TRUE              	IF MONTYP == "Z1013_202"
     370/    F130 :                     
     371/    F130 :                     ; Tastatur
     372/    F130 :                     ; --------
     373/    F130 :                     ;
     374/    F130 :                     ;      -------------------------------------------------        I-------I
     375/    F130 :                     ;      I X   I Y   I Z   I [ { I \ | I ] } I ^ ~ I _   I        I S1 S2 I
     376/    F130 :                     ;  RZ0-I     I     I     I     I     I     I     I     I        I       I
     377/    F130 :                     ;      I @ ` I A   I B   I C   I D   I E   I F   I G   I        I S0    I
     378/    F130 :                     ;      I-----+-----+-----+-----+-----+-----+-----+-----I        I-------I
     379/    F130 :                     ;      I 0   I 1 ! I 2 " I 3 # I 4 $ I 5 % I 6 & I 7 ' I
     380/    F130 :                     ;  RZ1-I     I     I     I     I     I     I     I     I        S0 = normal, Großbuchstaben
     381/    F130 :                     ;      I H   I I   I J   I K   I L   I M   I N   I O   I        S1 = Ziffern etc.
     382/    F130 :                     ;      I-----+-----+-----+-----+-----+-----+-----+-----I        S2 = Sonderzeichen etc.
     383/    F130 :                     ;      I 8 ( I 9 ) I : * I ; + I < , I = - I > . I ? / I        S3 = Kleinbuchstaben
     384/    F130 :                     ;  RZ2-I     I     I     I     I     I     I     I     I        S4 = Ctrl.
     385/    F130 :                     ;      I P   I Q   I R   I S   I T   I U   I V   I W   I
     386/    F130 :                     ;      I-----+-----+-----+-----+-----+-----+-----+-----I
     387/    F130 :                     ;      I     I     I     I     I     I     I     I     I
     388/    F130 :                     ;  RZ3-I     I     I     I     I     I     I     I     I
     389/    F130 :                     ;      I S1  I S2  I S3  I S4  I <-  I SP  I ->  I ENT I
     390/    F130 :                     ;      -------------------------------------------------
     391/    F130 :                     ;         !     !     !     !     !     !     !     !
     392/    F130 :                     ;        RS0   RS1   RS2   RS3   RS4   RS5   RS6   RS7
     393/    F130 :                     ;
     394/    F130 :                     ; IN 2 |                     OUT 8
     395/    F130 :                     
     396/    F130 :                     
     397/    F130 :                     inkey:					;bei Ret A=ASCII
     398/    F130 : AF                  	xor	a
     399/    F131 : 67                  	ld	h, a
     400/    F132 : 6F                  	ld	l, a
     401/    F133 : CD 88 F1            	call	ink9			;Tastenabfrage
     402/    F136 : 30 4B               	jr	nc, ink8		;Cy=0 keine Taste
     403/    F138 : 19                  	add	hl, de
     404/    F139 : CD 9E F1            	call	ink12			;restl. Spalten
     405/    F13C : 0E 44               	ld	c, 44h			;Tastaturcodetabelle 0044H Shift-Ebene 0 40h,48h,50h
     406/    F13E : 38 07               	jr	c, ink1			;Cy=1 2.Taste gedr.
     407/    F140 : EB                  	ex	de, hl
     408/    F141 : CB 5A               	bit	3, d			;Abfrage Zeile 3
     409/    F143 : 28 0B               	jr	z, ink2			;Z=1 Taste gedr.
     410/    F145 : 18 14               	jr	ink3
     411/    F147 : CB 5A               ink1:	bit	3, d			;2. Taste ? Zeile 3
     412/    F149 : 28 05               	jr	z, ink2			;Z=1 Taste gedr.
     413/    F14B : EB                  	ex	de, hl
     414/    F14C : CB 5A               	bit	3, d			;1. Taste ? Zeile 3
     415/    F14E : 20 0B               	jr	nz, ink3		;Z=1 Taste gedr.
     416/    F150 : CD A5 F1            ink2:	call	ink13			;Welche Taste in Z3
     417/    F153 : C5                  	push	bc
     418/    F154 : CD DC F1            	call	ink22			;Summand holen
     419/    F157 : C1                  	pop	bc
     420/    F158 : 28 06               	jr	z, ink4			;Z=0 kein Summ.
     421/    F15A : EB                  	ex	de, hl
     422/    F15B : CD DC F1            ink3:	call	ink22			;Summand holen
     423/    F15E : 20 23               	jr	nz, ink8		;Z=0 kein Summ.
     424/    F160 : 83                  ink4:	add	a, e
     425/    F161 : 21 27 00            	ld	hl, KYBTS
     426/    F164 : 86                  	add	a, (hl)
     427/    F165 :                     ;Berechnung Ascii-Wert abgeschlossen
     428/    F165 : 21 04 00            ink5:	ld	hl, LAKEY		;Softwareentprel-
     429/    F168 : BE                  	cp	(hl)			;lung, verhindert
     430/    F169 : 28 C5               	jr	z, inkey		;Repeat-Funktion
     431/    F16B : 47                  	ld	b, a
     432/    F16C : 7E                  	ld	a, (hl)
     433/    F16D : B7                  	or	a
     434/    F16E : 78                  	ld	a, b
     435/    F16F : 20 BF               	jr	nz, inkey		;Z=1 vorher keine
     436/    F171 : 32 04 00            	ld	(LAKEY), a		;Taste gedrueckt
     437/    F174 : FE 91               	cp	91h			;(S4/A)
     438/    F176 : 28 07               	jr	z, ink6			;Z=1- ASCII
     439/    F178 : FE 17               	cp	17h			;(S4/G)
     440/    F17A : C0                  	ret	nz			;Z=0 Ruecksprung
     441/    F17B : 3E 80               	ld	a, 80h
     442/    F17D : 18 01               	jr	ink7
     443/    F17F : AF                  ink6:	xor	a
     444/    F180 : 32 27 00            ink7:	ld	(KYBTS), a
     445/    F183 : AF                  ink8:	xor	a			;Ruecksprung wenn
     446/    F184 : 32 04 00            	ld	(LAKEY), a		;keine Taste gedr.
     447/    F187 : C9                  	ret				;mit A=0
     448/    F188 :                     ;UP Tastenabfrage
     449/    F188 : 5F                  ink9:	ld	e, a			;E=Spaltennummer
     450/    F189 : D3 08               	out	(KEYP), a		;Ausgabe Spalte
     451/    F18B : 06 20               	ld	b, 20h
     452/    F18D : DB 02               ink10:	in	a, (PIOBD)
     453/    F18F : E6 0F               	and	0Fh
     454/    F191 : 57                  	ld	d, a			;D=Zeilennummer
     455/    F192 : DB 02               	in	a, (PIOBD)
     456/    F194 : E6 0F               	and	0Fh
     457/    F196 : BA                  	cp	d
     458/    F197 : 20 03               	jr	nz, ink11		;Z=0 Taste prellt
     459/    F199 : FE 0F               	cp	0Fh
     460/    F19B : C0                  	ret	nz			;Z=0 Taste gedr.
     461/    F19C : 10 EF               ink11:	djnz	ink10
     462/    F19E : 7B                  ink12:	ld	a, e			;Erhoeh. Spalten-
     463/    F19F : 3C                  	inc	a			;zahl
     464/    F1A0 : FE 08               	cp	8
     465/    F1A2 : 20 E4               	jr	nz, ink9		;Z=1 alle Tasten
     466/    F1A4 : C9                  	ret				;abgefragt
     467/    F1A5 :                     ;Taste in Z3
     468/    F1A5 : 3E 01               ink13:	ld	a, 1			;Untersuchung
     469/    F1A7 : BB                  	cp	e			;welche Taste in
     470/    F1A8 : 28 29               	jr	z, ink19		;Zeile 3 gedr. ist
     471/    F1AA : 30 24               	jr	nc, ink18		;E=Spaltenzahl
     472/    F1AC : C6 02               	add	a, 2			;E=0 - C=41H
     473/    F1AE : BB                  	cp	e			;E=1 - C=3EH
     474/    F1AF : 28 28               	jr	z, ink21		;E=2 - C=3BH
     475/    F1B1 : 30 23               	jr	nc, ink20		;E=3 - C=35H
     476/    F1B3 : C6 02               	add	a, 2			;E=4 - A=08H
     477/    F1B5 : BB                  	cp	e			;E=5 - A=20H
     478/    F1B6 : 28 0F               	jr	z, ink15		;E=6 - A=09H
     479/    F1B8 : 30 11               	jr	nc, ink16		;E=7 - A=0DH
     480/    F1BA : C6 02               	add	a, 2
     481/    F1BC : BB                  	cp	e
     482/    F1BD : 28 04               	jr	z, ink14
     483/    F1BF : 3E 09               	ld	a, 9			; ->
     484/    F1C1 : 18 0A               	jr	ink17
     485/    F1C3 : 3E 0D               ink14:	ld	a, 0Dh			; ENT
     486/    F1C5 : 18 06               	jr	ink17
     487/    F1C7 : 3E 20               ink15:	ld	a, 20h			; SPACE
     488/    F1C9 : 18 02               	jr	ink17
     489/    F1CB : 3E 08               ink16:	ld	a, 8			; <-
     490/    F1CD : C1                  ink17:	pop	bc
     491/    F1CE : 18 95               	jr	ink5
     492/    F1D0 : 0E 41               ink18:	ld	c, 41h			;Tastaturcodetabelle 0041H Shift-Ebene 1 58h,30h,38h
     493/    F1D2 : C9                  	ret
     494/    F1D3 : 0E 3E               ink19:	ld	c, 3Eh			;Tastaturcodetabelle 003EH Shift-Ebene 2 78h,20h,28h
     495/    F1D5 : C9                  	ret
     496/    F1D6 : 0E 3B               ink20:	ld	c, 3Bh			;Tastaturcodetabelle 003BH Shift-Ebene 3 60h,68h,70h
     497/    F1D8 : C9                  	ret
     498/    F1D9 : 0E 35               ink21:	ld	c, 35h			;Tastaturcodetabelle 0035H Shift-Ebene 4 10h,00h,08h
     499/    F1DB : C9                  	ret
     500/    F1DC :                     
     501/    F1DC :                     ;Summand holen
     502/    F1DC : CB 42               ink22:	bit	0, d			;Abfrage Zeile 0
     503/    F1DE : 20 05               	jr	nz, ink24		;Z=0 keine Taste
     504/    F1E0 : 69                  ink23:	ld	l, c
     505/    F1E1 : 26 00               	ld	h, 0
     506/    F1E3 : 7E                  	ld	a, (hl)
     507/    F1E4 : C9                  	ret
     508/    F1E5 : 0C                  ink24:	inc	c
     509/    F1E6 : CB 4A               	bit	1, d			;Abfrage Zeile 1
     510/    F1E8 : 20 02               	jr	nz, ink25		;Z=0 keine Taste
     511/    F1EA : 18 F4               	jr	ink23
     512/    F1EC : 0C                  ink25:	inc	c
     513/    F1ED : CB 52               	bit	2, d			;Abfrage Zeile 2
     514/    F1EF : C0                  	ret	nz			;Z=0 keine Taste
     515/    F1F0 : 18 EE               	jr	ink23
     516/    F1F2 :                     
     517/    F1F2 : =>FALSE             	ELSEIF MONTYP == "Z1013_A2"
     518/    F1F2 :                     
     519/    F1F2 :                     ; Tastatur
     520/    F1F2 :                     ; --------
     521/    F1F2 :                     ;
     522/    F1F2 :                     ;      -------------------------------------------------
     523/    F1F2 :                     ;      I   ! I   # I   % I   ' I   ) I   = I     I     I
     524/    F1F2 :                     ;  RZ0-I     I     I     I     I     I     I     I     I
     525/    F1F2 :                     ;      I 1   I 3   I 5   I 7   I 9   I -   I GRA I     I
     526/    F1F2 :                     ;      I-----+-----+-----+-----+-----+-----+-----+-----I
     527/    F1F2 :                     ;      I     I     I     I     I     I   ` I     I     I
     528/    F1F2 :                     ;  RZ1-I     I     I     I     I     I     I     I     I
     529/    F1F2 :                     ;      I Q   I E   I T   I U   I O   I @   I ENT I     I
     530/    F1F2 :                     ;      I-----+-----+-----+-----+-----+-----+-----+-----I
     531/    F1F2 :                     ;      I     I     I     I     I     I   : I     I     I
     532/    F1F2 :                     ;  RZ2-I     I     I     I     I     I     I Cu  I     I
     533/    F1F2 :                     ;      I A   I D   I G   I J   I L   I *   I leftI     I
     534/    F1F2 :                     ;      I-----+-----+-----+-----+-----+-----+-----+-----I
     535/    F1F2 :                     ;      I     I     I     I     I   > I   ~ I     I     I
     536/    F1F2 :                     ;  RZ3-I     I     I     I     I     I     I Cu  I     I
     537/    F1F2 :                     ;      I Y   I C   I B   I M   I     I ^   I rghtI     I
     538/    F1F2 :                     ;      I-----+-----+-----+-----+-----+-----+-----+-----I
     539/    F1F2 :                     ;      I   " I   $ I   & I   ( I     I   { I     I     I
     540/    F1F2 :                     ;  RZ4-I     I     I     I     I     I     I     I     I
     541/    F1F2 :                     ;  RZ0 I 2   I 4   I 6   I 8   I 0   I [   I Spc I     I
     542/    F1F2 :                     ;      I-----+-----+-----+-----+-----+-----+-----+-----I
     543/    F1F2 :                     ;      I     I     I     I     I     I         } I     I
     544/    F1F2 :                     ;  RZ5-I     I     I     I     I     I     I     I     I
     545/    F1F2 :                     ;  RZ1 I W   I R   I Z   I I   I P   I ]   I CTRLI     I
     546/    F1F2 :                     ;      I-----+-----+-----+-----+-----+-----+-----+-----I
     547/    F1F2 :                     ;      I     I     I     I     I   ; I   | I     I     I
     548/    F1F2 :                     ;  RZ6-I     I     I     I     I     I     I Cu  I     I
     549/    F1F2 :                     ;  RZ2 I S   I F   I H   I K   I +   I \\  I up  I ShftI
     550/    F1F2 :                     ;      I-----+-----+-----+-----+-----+-----+-----+-----I
     551/    F1F2 :                     ;      I     I     I     I   < I   ? I    I     I     I
     552/    F1F2 :                     ;  RZ7-I     I     I     I     I     I     I Cu  I ShftI
     553/    F1F2 :                     ;  RZ3 I X   I V   I N   I ,   I /   I _   I downI LockI
     554/    F1F2 :                     ;      -------------------------------------------------
     555/    F1F2 :                     ;         !     !     !     !     !     !     !     !
     556/    F1F2 :                     ;        RS0   RS1   RS2   RS3   RS4   RS5   RS6   RS7
     557/    F1F2 :                     ;
     558/    F1F2 :                     ; IN 2 |                     OUT 8
     559/    F1F2 :                     ;
     560/    F1F2 :                     ; Zeile 4..7 werden auf Zeile 0..3 gemuxt, wenn Pio B4=1
     561/    F1F2 :                     
     562/    F1F2 :                     inkey:	ld	hl, KYBTS		; Merkzelle
     563/    F1F2 :                     	ld	a, 01011011b
     564/    F1F2 :                     	and	(hl)
     565/    F1F2 :                     	ld	(hl), a
     566/    F1F2 :                     	ld	ix, keytab		; Tastaturcodetabelle
     567/    F1F2 :                     	call	ink16			; normale Taste gedrückt?
     568/    F1F2 :                     	jr	nc, ink1		; nein, dann evtl. Fkt.taste?
     569/    F1F2 :                     	push	de			;
     570/    F1F2 :                     	set	7, (hl)
     571/    F1F2 :                     	call	ink20			; ASCII-Code aus Tabelle ermitteln
     572/    F1F2 :                     	ld	(DATA), a		; ASCII-Code
     573/    F1F2 :                     	pop	de			;
     574/    F1F2 :                     	call	ink18			;
     575/    F1F2 :                     ; Funktionstasten (Spalte 6)
     576/    F1F2 :                     ink1:	ld	ix, tab2		; Tastaturcodetabelle
     577/    F1F2 :                     	ld	e, 6			; Spalte 6
     578/    F1F2 :                     	call	ink19			; Spalte abfragen
     579/    F1F2 :                     	jr	z, ink9			; wenn keine Taste gedrückt
     580/    F1F2 :                     	bit	0, c			; GRA ?
     581/    F1F2 :                     	jr	z, ink2
     582/    F1F2 :                     	bit	5, c			; CTRL ?
     583/    F1F2 :                     	jr	z, ink5
     584/    F1F2 :                     	call	ink20			; ASCII-Code aus Tabelle ermitteln
     585/    F1F2 :                     	ret				; A = ASCII-Code
     586/    F1F2 :                     ; GRA
     587/    F1F2 :                     ink2:	ld	a, 2
     588/    F1F2 :                     	res	3, (hl)
     589/    F1F2 :                     ink3:	bit	6, (hl)
     590/    F1F2 :                     	jr	nz, ink4
     591/    F1F2 :                     	set	6, (hl)			; Statusbit Grafikmode setzen
     592/    F1F2 :                     	xor	(hl)
     593/    F1F2 :                     	ld	(hl), a
     594/    F1F2 :                     ink4:	xor	a
     595/    F1F2 :                     	ret
     596/    F1F2 :                     ; CTRL
     597/    F1F2 :                     ink5:	set	5, (hl)			; Statusbit CTRL setzen
     598/    F1F2 :                     	bit	7, (hl)
     599/    F1F2 :                     	jr	z, ink9
     600/    F1F2 :                     	ld	a, (DATA)
     601/    F1F2 :                     	bit	6, a
     602/    F1F2 :                     	jr	nz, ink6
     603/    F1F2 :                     	set	4, a
     604/    F1F2 :                     ink6:	and	1Fh
     605/    F1F2 :                     ink7:	bit	1, (hl)
     606/    F1F2 :                     	ret	z
     607/    F1F2 :                     	set	7, a			; Bit 7 := 1 (Grafikzeichen)
     608/    F1F2 :                     	ret
     609/    F1F2 :                     ; Shift
     610/    F1F2 :                     ink8:	res	6, (hl)
     611/    F1F2 :                     	bit	7, (hl)
     612/    F1F2 :                     	ret	z
     613/    F1F2 :                     	ld	a, (DATA)
     614/    F1F2 :                     	jr	ink7
     615/    F1F2 :                     ;
     616/    F1F2 :                     ink9:	ld	e, 7			; Spalte 7 (Shift)
     617/    F1F2 :                     	call	ink19			; Taste gedrückt?
     618/    F1F2 :                     	jr	z, ink10		; nein
     619/    F1F2 :                     	bit	7, c			; Shift Lock
     620/    F1F2 :                     	jr	z, ink15
     621/    F1F2 :                     	bit	6, c			; Shift
     622/    F1F2 :                     	jr	nz, ink8
     623/    F1F2 :                     	bit	5, (hl)
     624/    F1F2 :                     	jr	nz, ink15
     625/    F1F2 :                     ink10:	bit	7, (hl)			;
     626/    F1F2 :                     	ret	z			; nein
     627/    F1F2 :                     ; Repeat
     628/    F1F2 :                     	ld	a, (DATA)
     629/    F1F2 :                     	bit	6, c
     630/    F1F2 :                     	jr	z, ink11
     631/    F1F2 :                     	bit	3, (hl)
     632/    F1F2 :                     	jr	z, ink7
     633/    F1F2 :                     	jr	ink12
     634/    F1F2 :                     ink11:	bit	3, (hl)
     635/    F1F2 :                     	jr	nz, ink7
     636/    F1F2 :                     ink12:	ld	b, a
     637/    F1F2 :                     	and	30h
     638/    F1F2 :                     	ld	a, b
     639/    F1F2 :                     	jp	po, ink13
     640/    F1F2 :                     	res	4, a
     641/    F1F2 :                     	jr	ink14
     642/    F1F2 :                     ink13:	set	4, a
     643/    F1F2 :                     ink14:	set	5, a
     644/    F1F2 :                     	jr	ink7
     645/    F1F2 :                     ; Shift Lock
     646/    F1F2 :                     ink15:	ld	a, 8
     647/    F1F2 :                     	jp	ink3
     648/    F1F2 :                     ; normale Taste gedrückt?
     649/    F1F2 :                     ; IN: IX: Tastaturcodetabelle
     650/    F1F2 :                     ; OUT: Z-Flag=1: Taste gedrückt
     651/    F1F2 :                     ;      E = Spalte
     652/    F1F2 :                     ;      Cy=0: keine Taste gedrückt
     653/    F1F2 :                     ;	IX: Tastaturcodetabelle aktuelle Zeile
     654/    F1F2 :                     ink16:	ld	e, 0			; e = Spalte (0..5)
     655/    F1F2 :                     ink17:	call	ink19			; Taste in Spalte gedrückt?
     656/    F1F2 :                     	scf
     657/    F1F2 :                     	ret	nz			; wenn gedrueckt
     658/    F1F2 :                     ink18:	inc	e			; sonst naechste Spalte
     659/    F1F2 :                     	ld	bc, 8			; und Pointer auf Tastaturcode-
     660/    F1F2 :                     	add	ix, bc			; tabelle erhöhen
     661/    F1F2 :                     	ld	a, e
     662/    F1F2 :                     	cp	6			; Spalte RS6 erreicht?
     663/    F1F2 :                     	jr	nz, ink17		; bis alle 7 Spalten
     664/    F1F2 :                     	scf
     665/    F1F2 :                     	ccf				; Cy=0
     666/    F1F2 :                     	ret
     667/    F1F2 :                     ; Abfrage einer Spalte
     668/    F1F2 :                     ; IN E: Spalte
     669/    F1F2 :                     ; OUT: C: Zeile
     670/    F1F2 :                     ;      A = 0
     671/    F1F2 :                     ;      Z-Flag=1: Taste gedrückt
     672/    F1F2 :                     ink19:	ld	a, e			; e = Spalte
     673/    F1F2 :                     	out	(KEYP), a		; Spalte aktivieren
     674/    F1F2 :                     	out	(PIOBD), a		; Pio B4 = 0 (Zeile 0..3)
     675/    F1F2 :                     	in	a, (PIOBD)		; Zeilen 0..3 einlesen
     676/    F1F2 :                     	and	0Fh
     677/    F1F2 :                     	ld	c, a
     678/    F1F2 :                     	set	4, a			; PIO B4 = 1 (Zeile 4..7)
     679/    F1F2 :                     	out	(PIOBD), a
     680/    F1F2 :                     	in	a, (PIOBD)		; Zeilen 4..7 einlesen
     681/    F1F2 :                     	sla	a			; in obere 4 Bits verschieben
     682/    F1F2 :                     	sla	a
     683/    F1F2 :                     	sla	a
     684/    F1F2 :                     	sla	a
     685/    F1F2 :                     	ld	d, a			; d = Zeile 4..7
     686/    F1F2 :                     	add	a, c
     687/    F1F2 :                     	ld	c, a			; c = Zeile 0..7
     688/    F1F2 :                     ; Entprellen ...
     689/    F1F2 :                     	xor	a			; a = 0
     690/    F1F2 :                     	out	(PIOBD), a		; Pio B4 = 0 (Zeile 0..3)
     691/    F1F2 :                     	in	a, (PIOBD)		; Zeilen 0..3 einlesen
     692/    F1F2 :                     	and	0Fh
     693/    F1F2 :                     	add	a, d
     694/    F1F2 :                     	cp	c			; noch gleicher Wert?
     695/    F1F2 :                     	jr	nz, ink19		; nein
     696/    F1F2 :                     	cpl
     697/    F1F2 :                     	or	a
     698/    F1F2 :                     	ld	a, 0
     699/    F1F2 :                     	ret
     700/    F1F2 :                     ; ASCII-Code aus Tabelle ermitteln
     701/    F1F2 :                     ; IN: C = Zeile = Bit 0..7
     702/    F1F2 :                     ;     IX = Tastaturcodetabelle
     703/    F1F2 :                     ink20:	ld	de, 0
     704/    F1F2 :                     	ld	b, 8			; max 8 Zeilen
     705/    F1F2 :                     ink21:	sra	c			; nächste Zeile
     706/    F1F2 :                     	jr	nc, ink22
     707/    F1F2 :                     	inc	e
     708/    F1F2 :                     	djnz	ink21
     709/    F1F2 :                     ink22:	add	ix, de
     710/    F1F2 :                     	ld	a, (ix+0)		; A = ASCII-Code
     711/    F1F2 :                     	res	6, (hl)			;
     712/    F1F2 :                     	ret
     713/    F1F2 :                     
     714/    F1F2 : [369]               	ENDIF
     715/    F1F2 :                     ;
     716/    F1F2 :                     ;-------------------------------------------------------------------------------
     717/    F1F2 :                     ;Monitorinit., wird nach 0033H (LSYNC) umgeladen
     718/    F1F2 :                     ;-------------------------------------------------------------------------------
     719/    F1F2 :                     ;
     720/    F1F2 :                     MONTB:
     721/      33 :                     	phase	0033H
     722/      33 :                     
     723/      33 : =>TRUE              	IF MONTYP == "Z1013_202"
     724/      33 :                     
     725/      33 : D0 07               	DW	2000			;Kenntonlaenge LSYNC
     726/      35 : 10 00 08            	DB	10h,00h,08h		;Tastaturcodetabelle 0035H Shift-Ebene 4
     727/      38 : C3 58 F0            	JP	KDO1			;RST38-Sprung	RST38
     728/      3B : 60 68 70            	db	60h,68h,70h		;Tastaturcodetabelle 003BH Shift-Ebene 3
     729/      3E : 78 20 28            	db	78h,20h,28h		;Tastaturcodetabelle 003EH Shift-Ebene 2
     730/      41 : 58 30 38            	db	58h,30h,38h		;Tastaturcodetabelle 0041H Shift-Ebene 1
     731/      44 : 40 48 50            	db	40h,48h,50h		;Tastaturcodetabelle 0044H Shift-Ebene 0
     732/      47 : E0 03               	DW	03E0H			;WINDOW-Laenge	WINDL
     733/      49 : 00 EC               	DW	BWS			;WINDOW-Anfang	WINDA
     734/      4B : 00 F0               	DW	BWS+BWSSZ		;WINDOW-Ende	WINDE
     735/      4D :                     
     736/      4D : =>FALSE             	ELSEIF MONTYP == "Z1013_A2"
     737/      4D :                     
     738/      4D :                     	dw	2000			;Kenntonlaenge 	LSYNC
     739/      4D :                     	DW	BWSSZ-BWSCOL		;WINDOW-Laenge 	WINDL
     740/      4D :                     	db	0			;Status-Merkzelle f. INKEY KYBTS
     741/      4D :                     	jp	KDO1			;RST38-Sprung	RST38
     742/      4D :                     	DW	BWS			;WINDOW-Anfang	WINDA
     743/      4D :                     	DW	BWS+BWSSZ		;WINDOW-Ende	WINDE
     744/      4D :                     
     745/      4D : [723]               	ENDIF
     746/      4D :                     
     747/    F20C :                     	dephase
     748/    F20C :                     ;
     749/    F20C :                     ;-------------------------------------------------------------------------------
     750/    F20C :                     ;Zeichen von Tastatur holen, warten bis Taste gedrueckt
     751/    F20C :                     ;-------------------------------------------------------------------------------
     752/    F20C :                     ;
     753/    F20C : =>TRUE              	IF MONTYP == "Z1013_202"
     754/    F20C :                     
     755/    F20C : C5                  INCH:	push	bc
     756/    F20D : D5                  	push	de
     757/    F20E : E5                  	push	hl
     758/    F20F : CD 30 F1            INC1:	CALL	INKEY
     759/    F212 : B7                  	OR	A
     760/    F213 : 28 FA               	JR	Z, INC1			;keine Taste gedrueckt
     761/    F215 : E1                  	pop	hl
     762/    F216 : D1                  	pop	de
     763/    F217 : C1                  	pop	bc
     764/    F218 : C9                  	RET
     765/    F219 :                     
     766/    F219 : =>FALSE             	ELSEIF MONTYP == "Z1013_A2"
     767/    F219 :                     
     768/    F219 :                     INCH:	push	ix
     769/    F219 :                     	push	bc
     770/    F219 :                     	push	de
     771/    F219 :                     	push	hl
     772/    F219 :                     	ld	bc, 1000h		; B := 16; C := 0 (256)
     773/    F219 :                     INC1:	PUSH	BC
     774/    F219 :                     	CALL	INKEY			; ret: hl=KYBTS
     775/    F219 :                     	POP	BC
     776/    F219 :                     	LD	IX, LAKEY
     777/    F219 :                     	CP	(IX+0)
     778/    F219 :                     	JR	NZ, INC6		; wenn anderes Zeichen
     779/    F219 :                     	OR	A			; A = 0?
     780/    F219 :                     	JR	Z, INC5			; wenn keine Taste gedückt
     781/    F219 :                     INC2:	DEC	C
     782/    F219 :                     	JR	NZ, INC2		; kurz warten
     783/    F219 :                     	BIT	4, (HL)			; Repeat?
     784/    F219 :                     	JR	NZ, INC4		; ja -> gleich weiter
     785/    F219 :                     	LD	DE, 800H		; sonst längeres Warten
     786/    F219 :                     INC3:	DEC	DE
     787/    F219 :                     	LD	A, E
     788/    F219 :                     	OR	D
     789/    F219 :                     	JR	NZ, INC3
     790/    F219 :                     INC4:	DJNZ	INC1			; 16x
     791/    F219 :                     	SET	4, (HL)			; Repeat ein
     792/    F219 :                     	XOR	A			; A := 0, kein Zeichen
     793/    F219 :                     	JR	INC6
     794/    F219 :                     INC5:	RES	4, (HL)			; kein Repeat mehr
     795/    F219 :                     INC6:	LD	(IX+0),	A		; LAKEY füllen
     796/    F219 :                     	OR	A			; A = 0?
     797/    F219 :                     	JR	Z, INC1			; nochmal, bis Taste gedrückt
     798/    F219 :                     	POP	HL
     799/    F219 :                     	POP	DE
     800/    F219 :                     	POP	BC
     801/    F219 :                     	POP	IX
     802/    F219 :                     	RET
     803/    F219 :                     
     804/    F219 : [753]               	ENDIF
     805/    F219 :                     ;
     806/    F219 :                     ;-------------------------------------------------------------------------------
     807/    F219 :                     ;Ausgabe Zeichen auf Bildschirm
     808/    F219 :                     ;-------------------------------------------------------------------------------
     809/    F219 :                     ;
     810/    F219 :                     ; Zeichenausgabe f. PRST7: Reset Bit 7
     811/    F219 : E6 7F               OUT0:	AND	A, 7FH
     812/    F21B :                     ; Zeichenausgabe
     813/    F21B : F5                  OUTCH:	push	af
     814/    F21C : C5                  	push	bc
     815/    F21D : D5                  	push	de
     816/    F21E : E5                  	PUSH	HL
     817/    F21F : 2A 2B 00            	LD	HL,(CUPOS)
     818/    F222 : F5                  	PUSH	AF
     819/    F223 : 3A 1F 00            	LD	A,(BUFFA)		;Zeichen unter Cursor
     820/    F226 : 77                  	LD	(HL),A			;zurueckschreiben
     821/    F227 : F1                  	POP	AF
     822/    F228 : FE 0D               	CP	A, CR			;neue Zeile?
     823/    F22A : 28 53               	JR	Z, OUT8
     824/    F22C : FE 0C               	CP	A, CLS			;Bildschirm loeschen?
     825/    F22E : 28 5E               	JR	Z, OUT10
     826/    F230 : FE 08               	CP	A, 8			;Cursor links?
     827/    F232 : 28 48               	JR	Z, OUT7
     828/    F234 : FE 09               	CP	A, 9			;Cursor rechts?
     829/    F236 : 28 01               	JR	Z, OUT2
     830/    F238 : 77                  	LD	(HL),A			;sonst Zeichen in BWS
     831/    F239 : 23                  OUT2:	INC	HL
     832/    F23A :                     ;
     833/    F23A : EB                  OUT3:	EX	DE,HL
     834/    F23B : 2A 4B 00            	LD	HL,(WINDE)
     835/    F23E : AF                  	XOR	A			;Test, ob neue Cursor-
     836/    F23F : ED 52               	SBC	HL,DE			;position schon
     837/    F241 : EB                  	EX	DE,HL			;ausserhalb Window
     838/    F242 : 20 2A               	JR	NZ, OUT6		;nein
     839/    F244 :                     ;
     840/    F244 : ED 5B 49 00         	LD	DE,(WINDA)		;scrollen um
     841/    F248 : 21 20 00            	LD	HL,BWSCOL		;eine Zeile im Window
     842/    F24B : 19                  	ADD	HL,DE
     843/    F24C : ED 4B 47 00         	LD	BC,(WINDL)		;Windowlaenge
     844/    F250 : 78                  	LD	A,B
     845/    F251 : B1                  	OR	C			;=0?
     846/    F252 : 28 02               	JR	Z, OUT5			;ja --> kein Scrollen
     847/    F254 : ED B0               	LDIR
     848/    F256 : D5                  OUT5:	PUSH	DE			;letzte Zeile loeschen
     849/    F257 : E1                  	POP	HL
     850/    F258 : E5                  	PUSH	HL
     851/    F259 : 13                  	INC	DE
     852/    F25A : 36 20               	LD	(HL),' '
     853/    F25C : 01 1F 00            	LD	BC,BWSCOL-1
     854/    F25F : ED B0               	LDIR
     855/    F261 :                     ;
     856/    F261 : 2A 16 00            	LD	HL,(SOIL)		;SOIL um eine Zeile
     857/    F264 : 11 20 00            	LD	DE,BWSCOL		;erhoehen
     858/    F267 : AF                  	XOR	A
     859/    F268 : ED 52               	SBC	HL,DE
     860/    F26A : 22 16 00            	LD	(SOIL),HL
     861/    F26D : E1                  	POP	HL
     862/    F26E :                     ;
     863/    F26E : 7E                  OUT6:	LD	A,(HL)			;Zeichen unter Cursor
     864/    F26F : 32 1F 00            	LD	(BUFFA),A		;sichern
     865/    F272 : 36 FF               	LD	(HL),0FFH		;Cursor setzen
     866/    F274 : 22 2B 00            	LD	(CUPOS),HL
     867/    F277 : E1                  	POP	HL
     868/    F278 : D1                  	POP	DE
     869/    F279 : C1                  	POP	BC
     870/    F27A : F1                  	POP	AF
     871/    F27B : C9                  	RET
     872/    F27C :                     ;Cursor links
     873/    F27C : 2B                  OUT7:	DEC	HL
     874/    F27D : 18 BB               	JR	OUT3
     875/    F27F :                     ;neue Zeile
     876/    F27F : 3E E0               OUT8:	LD	A, 0E0H			;auf Zeilenanfang stellen
     877/    F281 : A5                  	AND	A, L			;A=Anfang akt. Zeile
     878/    F282 : C6 20               	ADD	A, BWSCOL		;A=NWB der Position
     879/    F284 : 4F                  	LD	C,A			;eine Zeile tiefer
     880/    F285 : 36 20               OUT9:	LD	(HL),' '		;Rest der Zeile ab
     881/    F287 : 23                  	INC	HL			;ENTER loeschen
     882/    F288 : 7D                  	LD	A,L
     883/    F289 : B9                  	CP	A, C
     884/    F28A : 20 F9               	JR	NZ, OUT9
     885/    F28C : 18 AC               	JR	OUT3
     886/    F28E :                     ;
     887/    F28E :                     ;Window loeschen
     888/    F28E : 2A 47 00            OUT10:	LD	HL,(WINDL)
     889/    F291 : 01 1F 00            	LD	BC,BWSCOL-1
     890/    F294 : 09                  	ADD	HL,BC
     891/    F295 : E5                  	PUSH	HL
     892/    F296 : C1                  	POP	BC
     893/    F297 : 2A 49 00            	LD	HL,(WINDA)
     894/    F29A : E5                  	PUSH	HL
     895/    F29B : 36 20               	LD	(HL),' '
     896/    F29D : E5                  	PUSH	HL
     897/    F29E : D1                  	POP	DE
     898/    F29F : 13                  	INC	DE
     899/    F2A0 : ED B0               	LDIR
     900/    F2A2 : E1                  	POP	HL
     901/    F2A3 : 18 C9               	JR	OUT6
     902/    F2A5 :                     ;
     903/    F2A5 :                     ;-------------------------------------------------------------------------------
     904/    F2A5 :                     ;Ausgabe String, bis Bit7=1
     905/    F2A5 :                     ;-------------------------------------------------------------------------------
     906/    F2A5 :                     ;
     907/    F2A5 : E3                  PRST7:	EX	(SP),HL			;Adresse hinter CALL
     908/    F2A6 : 7E                  PRS1:	LD	A,(HL)
     909/    F2A7 : 23                  	INC	HL
     910/    F2A8 : F5                  	PUSH	AF
     911/    F2A9 : CD 19 F2            	CALL	OUT0
     912/    F2AC : F1                  	POP	AF
     913/    F2AD : CB 7F               	BIT	7,A			;Bit7 gesetzt?
     914/    F2AF : 28 F5               	JR	Z, PRS1			;nein
     915/    F2B1 : E3                  	EX	(SP),HL			;neue Returnadresse
     916/    F2B2 : C9                  	RET
     917/    F2B3 :                     ;
     918/    F2B3 :                     ;-------------------------------------------------------------------------------
     919/    F2B3 :                     ;Eingabe einer Zeile mit Promptsymbol
     920/    F2B3 :                     ;-------------------------------------------------------------------------------
     921/    F2B3 :                     ;
     922/    F2B3 : CD A5 F2            INLIN:	CALL	PRST7
     923/    F2B6 : 20 23               	DB	" #"
     924/    F2B8 : A0                  	DB	' '+80H
     925/    F2B9 :                     ;
     926/    F2B9 :                     ;-------------------------------------------------------------------------------
     927/    F2B9 :                     ;Eingabe einer Zeichenkette
     928/    F2B9 :                     ;-------------------------------------------------------------------------------
     929/    F2B9 :                     ;
     930/    F2B9 : E5                  INSTR:	PUSH	HL
     931/    F2BA : 2A 2B 00            	LD	HL,(CUPOS)
     932/    F2BD : 22 16 00            	LD	(SOIL),HL		;SOIL=1.Position
     933/    F2C0 : (MACRO)             INS1:	RINCH				;Zeichen von Tastatur
     933/    F2C0 : E7                          RST     20H
     933/    F2C1 : 01                          DB      01h                     ; INCH
     934/    F2C2 : (MACRO)             	ROUTC				;anzeigen
     934/    F2C2 : E7                          RST     20H
     934/    F2C3 : 00                          DB      0                       ; OUTCH
     935/    F2C4 : FE 0D               	CP	A, CR			;>ENTER<?
     936/    F2C6 : 20 F8               	JR	NZ, INS1		;nein --> weiter eingeben
     937/    F2C8 : E1                  	POP	HL
     938/    F2C9 : C9                  	RET
     939/    F2CA :                     ;
     940/    F2CA :                     ;-------------------------------------------------------------------------------
     941/    F2CA :                     ;fuehrende Leerzeichen ueberlesen
     942/    F2CA :                     ;-------------------------------------------------------------------------------
     943/    F2CA :                     ;
     944/    F2CA : 1A                  SPACE:	LD	A,(DE)
     945/    F2CB : FE 20               	CP	A, ' '
     946/    F2CD : C0                  	RET	NZ
     947/    F2CE : 13                  	INC	DE
     948/    F2CF : 18 F9               	JR	SPACE
     949/    F2D1 :                     ;
     950/    F2D1 :                     ;-------------------------------------------------------------------------------
     951/    F2D1 :                     ;letzen vier Zeichen als Hexzahl konvertieren
     952/    F2D1 :                     ;und in DATA ablegen
     953/    F2D1 :                     ;-------------------------------------------------------------------------------
     954/    F2D1 :                     ;
     955/    F2D1 : CD CA F2            KONVX:	CALL	SPACE
     956/    F2D4 : AF                  	XOR	A
     957/    F2D5 : 21 13 00            	LD	HL,DATA
     958/    F2D8 : 77                  	LD	(HL),A			;DATA=0
     959/    F2D9 : 23                  	INC	HL
     960/    F2DA : 77                  	LD	(HL),A
     961/    F2DB : 1A                  KON1:	LD	A,(DE)
     962/    F2DC : 2B                  	DEC	HL
     963/    F2DD : D6 30               	SUB	30H			;Zeichen<"0"?
     964/    F2DF : F8                  	RET	M
     965/    F2E0 : FE 0A               	CP	A, 0AH			;Zeichen<="9"?
     966/    F2E2 : 38 08               	JR	C, KON2
     967/    F2E4 : D6 07               	SUB	7
     968/    F2E6 : FE 0A               	CP	A, 0AH			;Zeichen<"A"?
     969/    F2E8 : F8                  	RET	M
     970/    F2E9 : FE 10               	CP	A, 10H			;Zeichen>"F"?
     971/    F2EB : F0                  	RET	P
     972/    F2EC : 13                  KON2:	INC	DE			;Hexziffer eintragen
     973/    F2ED : ED 6F               	RLD
     974/    F2EF : 23                  	INC	HL
     975/    F2F0 : ED 6F               	RLD
     976/    F2F2 : 18 E7               	JR	KON1			;naechste Ziffer
     977/    F2F4 :                     ;
     978/    F2F4 :                     ;-------------------------------------------------------------------------------
     979/    F2F4 :                     ;Konvertierung ASCII-Hex ab (DE) --> (HL)
     980/    F2F4 :                     ;-------------------------------------------------------------------------------
     981/    F2F4 :                     ;
     982/    F2F4 : C5                  INHEX:	PUSH	BC
     983/    F2F5 : CD D1 F2            	CALL	KONVX			;Konvertierung
     984/    F2F8 : 44                  	LD	B,H			;BC=HL=DATA+1
     985/    F2F9 : 4D                  	LD	C,L
     986/    F2FA : 6E                  	LD	L,(HL)			;unteres Byte
     987/    F2FB : 03                  	INC	BC
     988/    F2FC : 0A                  	LD	A,(BC)
     989/    F2FD : 67                  	LD	H,A			;oberes Byte
     990/    F2FE : B5                  	OR	L			;Z-Flag setzen
     991/    F2FF : C1                  	POP	BC
     992/    F300 : C9                  	RET
     993/    F301 :                     ;
     994/    F301 :                     ;-------------------------------------------------------------------------------
     995/    F301 :                     ;Ausgabe (A) hexadezimal
     996/    F301 :                     ;-------------------------------------------------------------------------------
     997/    F301 :                     ;
     998/    F301 : F5                  OUTHX:	PUSH	AF
     999/    F302 : 1F                  	RRA
    1000/    F303 : 1F                  	RRA
    1001/    F304 : 1F                  	RRA
    1002/    F305 : 1F                  	RRA
    1003/    F306 : CD 0A F3            	CALL	OUX1			;obere Tetrade ausgeben
    1004/    F309 : F1                  	POP	AF			;und die untere
    1005/    F30A : F5                  OUX1:	PUSH	AF
    1006/    F30B : E6 0F               	AND	A, 0FH
    1007/    F30D : C6 30               	ADD	A, 30H			;Konvertierung --> ASCII
    1008/    F30F : FE 3A               	CP	A, ':'			;Ziffer "A" ... "F"?
    1009/    F311 : 38 02               	JR	C, OUX2			;nein
    1010/    F313 : C6 07               	ADD	A, 7			;sonst Korrektur
    1011/    F315 : CD 1B F2            OUX2:	CALL	OUTCH			;und Ausgabe
    1012/    F318 : F1                  	POP	AF
    1013/    F319 : C9                  	RET
    1014/    F31A :                     ;
    1015/    F31A :                     ;-------------------------------------------------------------------------------
    1016/    F31A :                     ;Ausgabe HL hexadezimal
    1017/    F31A :                     ;-------------------------------------------------------------------------------
    1018/    F31A :                     ;
    1019/    F31A : F5                  OUTHL:	PUSH	AF
    1020/    F31B : 7C                  	LD	A,H
    1021/    F31C : CD 01 F3            	CALL	OUTHX
    1022/    F31F : 7D                  	LD	A,L
    1023/    F320 : CD 01 F3            	CALL	OUTHX
    1024/    F323 : F1                  	POP	AF
    1025/    F324 : C9                  	RET
    1026/    F325 :                     ;
    1027/    F325 :                     ;-------------------------------------------------------------------------------
    1028/    F325 :                     ;Speicherinhalt modifizieren
    1029/    F325 :                     ;-------------------------------------------------------------------------------
    1030/    F325 :                     ;
    1031/    F325 : 2A 1B 00            MEM:	LD	HL,(ARG1)
    1032/    F328 : (MACRO)             MEM1:	ROTHL				;Ausgabe Adresse
    1032/    F328 : E7                          RST     20H
    1032/    F329 : 07                          DB      07h                     ; OUTHL
    1033/    F32A : E5                  	PUSH	HL
    1034/    F32B : (MACRO)             	ROTSP				;Leerzeichen
    1034/    F32B : E7                          RST     20H
    1034/    F32C : 0E                          DB      0Eh                     ; OUTSP
    1035/    F32D : 7E                  	LD	A,(HL)
    1036/    F32E : (MACRO)             	ROTHX				;Ausgabe Byte
    1036/    F32E : E7                          RST     20H
    1036/    F32F : 06                          DB      06h                     ; OUTHX
    1037/    F330 : CD B3 F2            	CALL	INLIN
    1038/    F333 : ED 5B 16 00         	LD	DE,(SOIL)
    1039/    F337 : 1A                  	LD	A,(DE)
    1040/    F338 : 08                  	EX	AF, AF'
    1041/    F339 : E1                  	POP	HL
    1042/    F33A : 2B                  	DEC	HL
    1043/    F33B : 23                  MEM2:	INC	HL
    1044/    F33C : E5                  	PUSH	HL
    1045/    F33D : CD F4 F2            	CALL	INHEX
    1046/    F340 : 28 0D               	JR	Z, MEM4			;Trennzeichen
    1047/    F342 : 7D                  MEM3:	LD	A,L
    1048/    F343 : E1                  	POP	HL
    1049/    F344 : 77                  	LD	(HL),A
    1050/    F345 : BE                  	CP	A, (HL)			;RAM-Test
    1051/    F346 : 28 F3               	JR	Z, MEM2			;i.O.
    1052/    F348 : (MACRO)             	RPRST
    1052/    F348 : E7                          RST     20H
    1052/    F349 : 02                          DB      02h                     ; PRST
    1053/    F34A : 45 52               	DB	"ER"
    1054/    F34C : A0                  	DB	' '+80H
    1055/    F34D : 18 D9               	JR	MEM1
    1056/    F34F :                     ;
    1057/    F34F : 1A                  MEM4:	LD	A,(DE)			;Test Datenbyte=0
    1058/    F350 : FE 20               	CP	A, ' '			;wenn ja --> Z=1
    1059/    F352 : 28 EE               	JR	Z, MEM3
    1060/    F354 : E1                  	POP	HL
    1061/    F355 : 23                  	INC	HL
    1062/    F356 : 22 1D 00            	LD	(ARG2),HL		;1. nichtbearb. Adr.
    1063/    F359 : FE 3B               	CP	A, ';'
    1064/    F35B : C8                  	RET	Z			;Return, wenn ";" gegeben
    1065/    F35C : 08                  	EX	AF, AF'
    1066/    F35D : FE 20               	CP	A, ' '
    1067/    F35F : 28 C7               	JR	Z, MEM1			;Z=1 keine Eingabe
    1068/    F361 : 2B                  	DEC	HL
    1069/    F362 : FE 52               	CP	A, 'R'			;"R" gegeben?
    1070/    F364 : 20 C2               	JR	NZ, MEM1		;nein
    1071/    F366 : 2B                  	DEC	HL			;sonst eine Adresse
    1072/    F367 : 18 BF               	JR	MEM1			;zurueck
    1073/    F369 :                     ;
    1074/    F369 :                     ;-------------------------------------------------------------------------------
    1075/    F369 :                     ;Speichern auf Kassette
    1076/    F369 :                     ;-------------------------------------------------------------------------------
    1077/    F369 :                     ;
    1078/    F369 : 2A 1B 00            CSAVE:	LD	HL,(ARG1)
    1079/    F36C : CD 7D F3            	CALL	SAV2			;Ausgabe 20H Bytes
    1080/    F36F : EB                  SAV1:	EX	DE,HL
    1081/    F370 : 2A 1D 00            	LD	HL,(ARG2)
    1082/    F373 : A7                  	AND	A, A
    1083/    F374 : ED 52               	SBC	HL,DE
    1084/    F376 : EB                  	EX	DE,HL
    1085/    F377 : D8                  	RET	C			;wenn File zu Ende
    1086/    F378 : CD 83 F3            	CALL	SAV3			;Ausgabe 20H Byte
    1087/    F37B : 18 F2               	JR	SAV1
    1088/    F37D :                     ;
    1089/    F37D : ED 5B 33 00         SAV2:	LD	DE,(LSYNC)		;langer Vorton
    1090/    F381 : 18 03               	JR	SAV4
    1091/    F383 :                     ;Ausgabe ein Block = 20H Bytes
    1092/    F383 : 11 0E 00            SAV3:	LD	DE,14			;kurzer Vorton
    1093/    F386 :                     ;Vorton: DE Halbschwingungen a 640 Hz
    1094/    F386 : 06 70               SAV4:	LD	B,70H			;Ausg. Vorton
    1095/    F388 : 10 FE               SAV5:	DJNZ	SAV5
    1096/    F38A : CD F1 F3            	CALL	SAV21			;Flanke wechseln
    1097/    F38D : 1B                  	DEC	DE
    1098/    F38E : 7B                  	LD	A,E
    1099/    F38F : B2                  	OR	D
    1100/    F390 : 20 F4               	JR	NZ,SAV4
    1101/    F392 :                     ;Trennschwingung: 1 Vollschwingung a 1280 Hz	
    1102/    F392 : 0E 02               	LD	C,02H			;Ausgabe Synchron-
    1103/    F394 : 06 35               SAV6:	LD	B,35H			;impulse
    1104/    F396 : 10 FE               SAV7:	DJNZ	SAV7
    1105/    F398 : CD F1 F3            	CALL	SAV21			;Flanke wechseln
    1106/    F39B : 0D                  	DEC	C
    1107/    F39C : 11 00 00            	LD	DE,0
    1108/    F39F : 20 F3               	JR	NZ,SAV6
    1109/    F3A1 :                     ;
    1110/    F3A1 : D5                  	PUSH	DE			;DE=IX=0000
    1111/    F3A2 : DD E1               	POP	IX
    1112/    F3A4 :                     ;Kopfinhalt ausgeben
    1113/    F3A4 : 06 12               	LD	B,12H			;kurze Pause
    1114/    F3A6 : 10 FE               SAV8:	DJNZ	SAV8
    1115/    F3A8 : CD D0 F3            	CALL	SAV14			;Ausgabe DE
    1116/    F3AB : 06 0F               	LD	B,0FH			;kurze Pause
    1117/    F3AD : 10 FE               SAV9:	DJNZ	SAV9
    1118/    F3AF :                     ;20H Bytes ausgeben
    1119/    F3AF : 0E 10               	LD	C,10H			;10H*2 Bytes
    1120/    F3B1 : 5E                  SAV10:	LD	E,(HL)
    1121/    F3B2 : 23                  	INC	HL
    1122/    F3B3 : 56                  	LD	D,(HL)
    1123/    F3B4 : DD 19               	ADD	IX,DE			;Pruefsumme bilden
    1124/    F3B6 : 23                  	INC	HL
    1125/    F3B7 : C5                  	PUSH	BC
    1126/    F3B8 : CD D0 F3            	CALL	SAV14			;Ausgabe DE
    1127/    F3BB : C1                  	POP	BC
    1128/    F3BC : 0D                  	DEC	C
    1129/    F3BD : 28 06               	JR	Z, SAV12		;Block fertig geschrieben
    1130/    F3BF : 06 0E               	LD	B,0EH			;kurze Pause
    1131/    F3C1 : 10 FE               SAV11:	DJNZ	SAV11
    1132/    F3C3 : 18 EC               	JR	SAV10
    1133/    F3C5 :                     ;Pruefsumme ausgeben
    1134/    F3C5 : DD E5               SAV12:	PUSH	IX
    1135/    F3C7 : D1                  	POP	DE			;DE = Pruefsumme
    1136/    F3C8 : 06 10               	LD	B,10H			;kurze Pause
    1137/    F3CA : 10 FE               SAV13:	DJNZ	SAV13			
    1138/    F3CC : CD D0 F3            	CALL	SAV14			;DE ausgeben
    1139/    F3CF : C9                  	RET
    1140/    F3D0 :                     ;Ausgabe 16 Bit DE
    1141/    F3D0 : 0E 10               SAV14:	LD	C,16			;16 Bit
    1142/    F3D2 : CB 3A               SAV15:	SRL	D			;Hi-Bit in Cy schieben
    1143/    F3D4 : CB 1B               	RR	E
    1144/    F3D6 : 30 07               	JR	NC, SAV17		;Cy=1, wenn Bit=1
    1145/    F3D8 :                     ;1-Bit 1 Halbschwingung mit 1280 Hz 
    1146/    F3D8 : 06 03               	LD	B,3
    1147/    F3DA : 10 FE               SAV16:	DJNZ	SAV16
    1148/    F3DC : 00                  	NOP
    1149/    F3DD : 18 03               	JR	SAV18
    1150/    F3DF :                     ;0-Bit 1 Vollschwingung mit 2560 Hz 
    1151/    F3DF : CD F1 F3            SAV17:	CALL	SAV21			;Flanke ausgeben
    1152/    F3E2 : 06 19               SAV18:	LD	B,19H
    1153/    F3E4 : 10 FE               SAV19:	DJNZ	SAV19
    1154/    F3E6 : CD F1 F3            	CALL	SAV21			;Flanke ausgeben
    1155/    F3E9 : 0D                  	DEC	C
    1156/    F3EA : C8                  	RET	Z			;wenn fertig
    1157/    F3EB : 06 15               	LD	B,15H
    1158/    F3ED : 10 FE               SAV20:	DJNZ	SAV20
    1159/    F3EF : 18 E1               	JR	SAV15
    1160/    F3F1 :                     ;Flanke ausgeben
    1161/    F3F1 : DB 02               SAV21:	IN	A, PIOBD		;Flanke ausgeben
    1162/    F3F3 : EE 80               	XOR	80H			;durch Bit-Negierung Bit7
    1163/    F3F5 : D3 02               	OUT	PIOBD, A
    1164/    F3F7 : C9                  	RET
    1165/    F3F8 :                     ;
    1166/    F3F8 :                     ;-------------------------------------------------------------------------------
    1167/    F3F8 :                     ;Laden von Kassette
    1168/    F3F8 :                     ;-------------------------------------------------------------------------------
    1169/    F3F8 :                     ;
    1170/    F3F8 : 2A 1B 00            CLOAD:	LD	HL,(ARG1)
    1171/    F3FB : CD 17 F4            LOA1:	CALL	LOA3			;laden 20H Bytes
    1172/    F3FE : 28 0C               	JR	Z, LOA2			;wenn kein Ladefehler
    1173/    F400 : CD A5 F2            	CALL	PRST7			;sonst Fehler
    1174/    F403 : 43 53               	DB	"CS"
    1175/    F405 : BC                  	DB	'<'+80h
    1176/    F406 : CD 1A F3            	CALL	OUTHL			;Adresse ausgeben
    1177/    F409 : CD CF F5            	CALL	OUTSP
    1178/    F40C : EB                  LOA2:	EX	DE,HL
    1179/    F40D : 2A 1D 00            	LD	HL,(ARG2)
    1180/    F410 : A7                  	AND	A, A
    1181/    F411 : ED 52               	SBC	HL,DE			;Endadresse erreicht?
    1182/    F413 : EB                  	EX	DE,HL
    1183/    F414 : D8                  	RET	C			;ja --> fertig
    1184/    F415 : 18 E4               	JR	LOA1			;sonst weiterlesen
    1185/    F417 :                     ;20H Bytes laden nach (HL)
    1186/    F417 : CD BC F4            LOA3:	CALL	LOA24			;synchronisieren
    1187/    F41A : CD C6 F4            	CALL	LOA25			;Flanke abwarten
    1188/    F41D : 0E 07               	LD	C,7
    1189/    F41F : 11 10 09            LOA5:	LD	DE,0910H		;D=9, E=10h
    1190/    F422 : 3E 07               	LD	A,7
    1191/    F424 : 3D                  LOA6:	DEC	A
    1192/    F425 : 20 FD               	JR	NZ, LOA6
    1193/    F427 : CD BC F4            	CALL	LOA24			;synchronisieren
    1194/    F42A : CD BC F4            LOA7:	CALL	LOA24			;Flanke ?
    1195/    F42D : 20 E8               	JR	NZ, LOA3		;wenn nicht Vorton
    1196/    F42F : 15                  	DEC	D
    1197/    F430 : 20 F8               	JR	NZ, LOA7
    1198/    F432 : 0D                  	DEC	C
    1199/    F433 : 28 0C               	JR	Z, LOA9
    1200/    F435 : DB 02               LOA8:	IN	A, 2
    1201/    F437 : A8                  	XOR	B
    1202/    F438 : CB 77               	BIT	6,A
    1203/    F43A : 20 E3               	JR	NZ, LOA5
    1204/    F43C : 1D                  	DEC	E
    1205/    F43D : 20 F6               	JR	NZ, LOA8
    1206/    F43F : 18 D6               	JR	LOA3
    1207/    F441 :                     ;Synchronisierimpulse lesen
    1208/    F441 : CD C6 F4            LOA9:	CALL	LOA25			;Flanke abwarten
    1209/    F444 : 3E 44               	LD	A,44H
    1210/    F446 : 3D                  LOA10:	DEC	A
    1211/    F447 : 20 FD               	JR	NZ, LOA10
    1212/    F449 : CD BC F4            	CALL	LOA24			;Flanke ?
    1213/    F44C : 20 F3               	JR	NZ, LOA9		;wenn nicht
    1214/    F44E : CD C6 F4            	CALL	LOA25			;Flanke abwarten
    1215/    F451 : 3E 1E               	LD	A,1EH
    1216/    F453 : 3D                  LOA11:	DEC	A
    1217/    F454 : 20 FD               	JR	NZ, LOA11
    1218/    F456 :                     ;2 Bytes Kopf lesen
    1219/    F456 : CD 9D F4            	CALL	LOA19			;lesen DE
    1220/    F459 :                     ;20H Byte Daten lesen
    1221/    F459 : 0E 10               	LD	C,10H			;10H x 2 Bytes
    1222/    F45B : D5                  	PUSH	DE
    1223/    F45C : DD E1               	POP	IX			;IX-Pruefsummenzaehler=
    1224/    F45E : 3E 1A               	LD	A,1AH
    1225/    F460 : 3D                  LOA12:	DEC	A
    1226/    F461 : 20 FD               	JR	NZ, LOA12
    1227/    F463 : CD 9D F4            LOA13:	CALL	LOA19			;laden DE
    1228/    F466 : DD 19               	ADD	IX,DE			;Pruefsumme bilden
    1229/    F468 : C5                  	PUSH	BC
    1230/    F469 : 4D                  	LD	C,L
    1231/    F46A : 44                  	LD	B,H
    1232/    F46B : 2A 1D 00            	LD	HL,(ARG2)
    1233/    F46E : AF                  	XOR	A
    1234/    F46F : ED 42               	SBC	HL,BC			;Endadresse erreicht?
    1235/    F471 : 69                  	LD	L,C
    1236/    F472 : 60                  	LD	H,B
    1237/    F473 : C1                  	POP	BC
    1238/    F474 : 38 05               	JR	C, LOA14		;ja --> Leseende
    1239/    F476 : 73                  	LD	(HL),E
    1240/    F477 : 23                  	INC	HL
    1241/    F478 : 72                  	LD	(HL),D
    1242/    F479 : 18 06               	JR	LOA16
    1243/    F47B : 3E 01               LOA14:	LD	A,1
    1244/    F47D : 3D                  LOA15:	DEC	A
    1245/    F47E : 20 FD               	JR	NZ, LOA15
    1246/    F480 : 23                  	INC	HL
    1247/    F481 : 23                  LOA16:	INC	HL
    1248/    F482 : 0D                  	DEC	C
    1249/    F483 : 28 07               	JR	Z, LOA18		;wenn Blockende
    1250/    F485 : 3E 12               	LD	A,12H
    1251/    F487 : 3D                  LOA17:	DEC	A
    1252/    F488 : 20 FD               	JR	NZ, LOA17
    1253/    F48A : 18 D7               	JR	LOA13			;naechte 2 Byte
    1254/    F48C : 3E 12               LOA18:	LD	A,12H
    1255/    F48E : 3D                  LOA27:	DEC	A
    1256/    F48F : 20 FD               	JR	NZ, LOA27
    1257/    F491 :                     ;Pruefsumme lesen	
    1258/    F491 : CD 9D F4            	CALL	LOA19			;laden DE
    1259/    F494 : EB                  	EX	DE,HL
    1260/    F495 : DD E5               	PUSH	IX
    1261/    F497 : C1                  	POP	BC
    1262/    F498 : AF                  	XOR	A
    1263/    F499 : ED 42               	SBC	HL,BC			;Prüfsumme gleich?
    1264/    F49B : EB                  	EX	DE,HL			;Z=0 Ladefehler
    1265/    F49C : C9                  	RET
    1266/    F49D :                     ;Laden 2 Byte nach DE
    1267/    F49D : E5                  LOA19:	PUSH	HL
    1268/    F49E : 2E 10               	LD	L,10H			;16 Datenbits
    1269/    F4A0 : CD BC F4            LOA20:	CALL	LOA24			;Flanke ?
    1270/    F4A3 : 20 03               	JR	NZ, LOA21
    1271/    F4A5 : AF                  	XOR	A			;Cy=0
    1272/    F4A6 : 18 01               	JR	LOA22
    1273/    F4A8 : 37                  LOA21:	SCF
    1274/    F4A9 : CB 1A               LOA22:	RR	D
    1275/    F4AB : CB 1B               	RR	E
    1276/    F4AD : CD C6 F4            	CALL	LOA25			;Flanke abwarten
    1277/    F4B0 : 2D                  	DEC	L
    1278/    F4B1 : 28 07               	JR	Z, LOA23		;wenn fertig
    1279/    F4B3 : 3E 1E               	LD	A,1EH
    1280/    F4B5 : 3D                  LOA26:	DEC	A
    1281/    F4B6 : 20 FD               	JR	NZ, LOA26
    1282/    F4B8 : 18 E6               	JR	LOA20
    1283/    F4BA : E1                  LOA23:	POP	HL
    1284/    F4BB : C9                  	RET
    1285/    F4BC :                     ;Portabfrage
    1286/    F4BC : DB 02               LOA24:	IN	A, PIOBD
    1287/    F4BE : A8                  	XOR	B
    1288/    F4BF : CB 77               	BIT	6,A			;Bit6->TB in
    1289/    F4C1 : F5                  	PUSH	AF
    1290/    F4C2 : A8                  	XOR	B
    1291/    F4C3 : 47                  	LD	B,A
    1292/    F4C4 : F1                  	POP	AF			;Z=0 --> Flanke
    1293/    F4C5 : C9                  	RET
    1294/    F4C6 :                     ;Warten auf Flankenwechsel
    1295/    F4C6 : DB 02               LOA25:	IN	A, PIOBD
    1296/    F4C8 : A8                  	XOR	B
    1297/    F4C9 : CB 77               	BIT	6,A			;Bit6->TB in
    1298/    F4CB : 28 F9               	JR	Z, LOA25
    1299/    F4CD : C9                  	RET
    1300/    F4CE :                     ;
    1301/    F4CE :                     ;-------------------------------------------------------------------------------
    1302/    F4CE :                     ;Speicherinhalt mit Checksumme anzeigen
    1303/    F4CE :                     ;-------------------------------------------------------------------------------
    1304/    F4CE :                     ;
    1305/    F4CE : 2A 1B 00            D_KDO:	LD	HL,(ARG1)
    1306/    F4D1 : ED 5B 1D 00         DKO1:	LD	DE,(ARG2)
    1307/    F4D5 : 37                  	SCF
    1308/    F4D6 : E5                  	PUSH	HL
    1309/    F4D7 : ED 52               	SBC	HL,DE
    1310/    F4D9 : E1                  	POP	HL
    1311/    F4DA : D0                  	RET	NC			;wenn EADR<AADR
    1312/    F4DB : (MACRO)             	ROTHL
    1312/    F4DB : E7                          RST     20H
    1312/    F4DC : 07                          DB      07h                     ; OUTHL
    1313/    F4DD : 01 00 08            	LD	BC,0800H		;B=8
    1314/    F4E0 : 1E 00               	LD	E,0			;EC=0 - Checksumme
    1315/    F4E2 : (MACRO)             DKO2:	RPRST
    1315/    F4E2 : E7                          RST     20H
    1315/    F4E3 : 02                          DB      02h                     ; PRST
    1316/    F4E4 : A0                  	DB	' '+80H
    1317/    F4E5 : 7E                  	LD	A,(HL)
    1318/    F4E6 : (MACRO)             	ROTHX
    1318/    F4E6 : E7                          RST     20H
    1318/    F4E7 : 06                          DB      06h                     ; OUTHX
    1319/    F4E8 : 81                  	ADD	A, C			;Checksumme bilden
    1320/    F4E9 : 4F                  	LD	C,A
    1321/    F4EA : 30 04               	JR	NC, DKO3
    1322/    F4EC : 3E 00               	LD	A,0
    1323/    F4EE : 8B                  	ADC	A, E
    1324/    F4EF : 5F                  	LD	E,A
    1325/    F4F0 : 23                  DKO3:	INC	HL
    1326/    F4F1 : 10 EF               	DJNZ	DKO2
    1327/    F4F3 : (MACRO)             	RPRST
    1327/    F4F3 : E7                          RST     20H
    1327/    F4F4 : 02                          DB      02h                     ; PRST
    1328/    F4F5 : A0                  	DB	' '+80H
    1329/    F4F6 : 7B                  	LD	A,E
    1330/    F4F7 : CD 0A F3            	CALL	OUX1			;Checksumme ausgeben
    1331/    F4FA : 79                  	LD	A,C
    1332/    F4FB : (MACRO)             	ROTHX
    1332/    F4FB : E7                          RST     20H
    1332/    F4FC : 06                          DB      06h                     ; OUTHX
    1333/    F4FD : 18 D2               	JR	DKO1
    1334/    F4FF :                     ;
    1335/    F4FF :                     ;-------------------------------------------------------------------------------
    1336/    F4FF :                     ;Argumente uebergeben
    1337/    F4FF :                     ;-------------------------------------------------------------------------------
    1338/    F4FF :                     ;
    1339/    F4FF : 2A 1B 00            PARA:	LD	HL,(ARG1)
    1340/    F502 : ED 5B 1D 00         	LD	DE,(ARG2)
    1341/    F506 : ED 4B 23 00         	LD	BC,(ARG3)
    1342/    F50A : C9                  	RET
    1343/    F50B :                     ;
    1344/    F50B :                     ;-------------------------------------------------------------------------------
    1345/    F50B :                     ;Speicherbereich mit Byte beschreiben
    1346/    F50B :                     ;-------------------------------------------------------------------------------
    1347/    F50B :                     ;
    1348/    F50B : CD FF F4            K_KDO:	CALL	PARA
    1349/    F50E : 71                  	LD	(HL),C			;C=Fuellbyte
    1350/    F50F : E5                  	PUSH	HL
    1351/    F510 : AF                  	XOR	A
    1352/    F511 : EB                  	EX	DE,HL
    1353/    F512 : ED 52               	SBC	HL,DE
    1354/    F514 : 44                  	LD	B,H
    1355/    F515 : 4D                  	LD	C,L			;BC=Laenge
    1356/    F516 : E1                  	POP	HL
    1357/    F517 : 54                  	LD	D,H
    1358/    F518 : 5D                  	LD	E,L
    1359/    F519 : 13                  	INC	DE
    1360/    F51A : ED B0               	LDIR
    1361/    F51C : C9                  	RET
    1362/    F51D :                     ;
    1363/    F51D :                     ;-------------------------------------------------------------------------------
    1364/    F51D :                     ;Speicherbereich verschieben
    1365/    F51D :                     ;-------------------------------------------------------------------------------
    1366/    F51D :                     ;
    1367/    F51D : CD FF F4            T_KDO:	CALL	PARA
    1368/    F520 : AF                  	XOR	A
    1369/    F521 : E5                  	PUSH	HL
    1370/    F522 : ED 52               	SBC	HL,DE
    1371/    F524 : E1                  	POP	HL
    1372/    F525 : 38 03               	JR	C, TKO1			;wenn Zieladr. groesser
    1373/    F527 : ED B0               	LDIR				;Vorwaertstransfer
    1374/    F529 : C9                  	RET
    1375/    F52A : 09                  TKO1:	ADD	HL,BC
    1376/    F52B : EB                  	EX	DE,HL
    1377/    F52C : 09                  	ADD	HL,BC
    1378/    F52D : EB                  	EX	DE,HL
    1379/    F52E : 2B                  	DEC	HL
    1380/    F52F : 1B                  	DEC	DE
    1381/    F530 : ED B8               	LDDR				;Rueckwaertstransfer
    1382/    F532 : C9                  	RET
    1383/    F533 :                     ;
    1384/    F533 :                     ;-------------------------------------------------------------------------------
    1385/    F533 :                     ;Debugging-Funktionen
    1386/    F533 :                     ;-------------------------------------------------------------------------------
    1387/    F533 :                     ;
    1388/    F533 :                     ;Register im Registerrettebereich ablegen
    1389/    F533 :                     ;
    1390/    F533 : ED 73 13 00         REGA:	LD	(DATA),SP
    1391/    F537 : 31 61 00            	LD	SP,REGPC
    1392/    F53A : DD E5               	PUSH	IX
    1393/    F53C : FD E5               	PUSH	IY
    1394/    F53E : F5                  	PUSH	AF
    1395/    F53F : C5                  	PUSH	BC
    1396/    F540 : D5                  	PUSH	DE
    1397/    F541 : E5                  	PUSH	HL
    1398/    F542 : D9                  	EXX
    1399/    F543 : 08                  	EX	AF, AF'
    1400/    F544 : F5                  	PUSH	AF
    1401/    F545 : C5                  	PUSH	BC
    1402/    F546 : D5                  	PUSH	DE
    1403/    F547 : E5                  	PUSH	HL
    1404/    F548 : 18 15               	JR	REG1
    1405/    F54A :                     ;Register aus Registerrettebereich holen
    1406/    F54A : ED 73 13 00         REGH:	LD	(DATA),SP
    1407/    F54E : 31 4D 00            	LD	SP,REGBR
    1408/    F551 : E1                  	POP	HL
    1409/    F552 : D1                  	POP	DE
    1410/    F553 : C1                  	POP	BC
    1411/    F554 : F1                  	POP	AF
    1412/    F555 : D9                  	EXX
    1413/    F556 : 08                  	EX	AF, AF'
    1414/    F557 : E1                  	POP	HL
    1415/    F558 : D1                  	POP	DE
    1416/    F559 : C1                  	POP	BC
    1417/    F55A : F1                  	POP	AF
    1418/    F55B : FD E1               	POP	IY
    1419/    F55D : DD E1               	POP	IX
    1420/    F55F : ED 7B 13 00         REG1:	LD	SP,(DATA)
    1421/    F563 : C9                  	RET
    1422/    F564 :                     ;
    1423/    F564 :                     ;Einsprung bei Breakpoint
    1424/    F564 :                     ;
    1425/    F564 : CD 33 F5            BREAK:	CALL	REGA			;Register ablegen
    1426/    F567 : E1                  	POP	HL			;HL=Breakadr.+3
    1427/    F568 : ED 73 63 00         	LD	(REGSP),SP		;SP sichern
    1428/    F56C : 31 B0 00            	LD	SP,SYSSK		;Systemstack nutzen
    1429/    F56F : 2B                  	DEC	HL
    1430/    F570 : 2B                  	DEC	HL
    1431/    F571 : 2B                  	DEC	HL
    1432/    F572 : 22 61 00            	LD	(REGPC),HL		;Breakadresse
    1433/    F575 : ED 5B 0B 00         	LD	DE,(BPADR)		;die originalen 3 Byte
    1434/    F579 : 21 0D 00            	LD	HL,BPOPC		;Operanden zurueckbringen
    1435/    F57C : 01 03 00            	LD	BC,3
    1436/    F57F : ED B0               	LDIR
    1437/    F581 : CD E4 F5            	CALL	REGDA
    1438/    F584 : C3 5F F0            	JP	KDO2
    1439/    F587 :                     ;
    1440/    F587 :                     ;-------------------------------------------------------------------------------
    1441/    F587 :                     ;Breakpoint-Adresse setzen
    1442/    F587 :                     ;-------------------------------------------------------------------------------
    1443/    F587 :                     ;
    1444/    F587 : 2A 1B 00            B_KDO:	LD	HL,(ARG1)
    1445/    F58A : 22 0B 00            	LD	(BPADR),HL
    1446/    F58D : 11 0D 00            	LD	DE,BPOPC		;3 Byte Operanden
    1447/    F590 : 01 03 00            	LD	BC,3			;retten
    1448/    F593 : ED B0               	LDIR
    1449/    F595 : CD E4 F5            	CALL	REGDA			;Register anzeigen
    1450/    F598 : C9                  	RET
    1451/    F599 :                     ;
    1452/    F599 :                     ;-------------------------------------------------------------------------------
    1453/    F599 :                     ;Programm starten mit Breakpoint
    1454/    F599 :                     ;-------------------------------------------------------------------------------
    1455/    F599 :                     ;
    1456/    F599 : 2A 0B 00            E_KDO:	LD	HL,(BPADR)
    1457/    F59C : 36 CD               	LD	(HL),0CDH		;CALL ...
    1458/    F59E : 23                  	INC	HL
    1459/    F59F : 11 64 F5            	LD	DE,BREAK		;an Breakpoint Unter-
    1460/    F5A2 : 73                  	LD	(HL),E			;Brechung zu BREAK eintragen
    1461/    F5A3 : 23                  	INC	HL
    1462/    F5A4 : 72                  	LD	(HL),D
    1463/    F5A5 :                     ;
    1464/    F5A5 :                     ;-------------------------------------------------------------------------------
    1465/    F5A5 :                     ;Programm starten
    1466/    F5A5 :                     ;-------------------------------------------------------------------------------
    1467/    F5A5 :                     ;
    1468/    F5A5 : 2A 1B 00            J_KDO:	LD	HL,(ARG1)		;Startadresse
    1469/    F5A8 : 22 61 00            	LD	(REGPC),HL		;zwischenspeichern
    1470/    F5AB : ED 7B 63 00         	LD	SP,(REGSP)		;Stack generieren
    1471/    F5AF : E5                  	PUSH	HL			;Startadresse in Stack
    1472/    F5B0 : C3 4A F5            	JP	REGH			;Register holen
    1473/    F5B3 :                     					;und Pgm. durch RET starten
    1474/    F5B3 :                     ;
    1475/    F5B3 :                     ;-------------------------------------------------------------------------------
    1476/    F5B3 :                     ;Programm nach Break fortsetzen
    1477/    F5B3 :                     ;-------------------------------------------------------------------------------
    1478/    F5B3 :                     ;
    1479/    F5B3 : 2A 61 00            G_KDO:	LD	HL,(REGPC)
    1480/    F5B6 : 22 1B 00            	LD	(ARG1),HL
    1481/    F5B9 : ED 5B 0B 00         	LD	DE,(BPADR)
    1482/    F5BD : AF                  	XOR	A			;Cy=0
    1483/    F5BE : ED 52               	SBC	HL,DE
    1484/    F5C0 : 20 D7               	JR	NZ, E_KDO		;wenn nicht Breakpoint
    1485/    F5C2 : 18 E1               	JR	J_KDO			;starten
    1486/    F5C4 :                     ;
    1487/    F5C4 :                     ;-------------------------------------------------------------------------------
    1488/    F5C4 :                     ;Ausgabe eines Doppelpunktes und (HL) und Leerzeichen
    1489/    F5C4 :                     ;-------------------------------------------------------------------------------
    1490/    F5C4 :                     ;
    1491/    F5C4 : (MACRO)             OUTDP:	RPRST
    1491/    F5C4 : E7                          RST     20H
    1491/    F5C5 : 02                          DB      02h                     ; PRST
    1492/    F5C6 : BA                  	DB	':'+80H
    1493/    F5C7 :                     ;
    1494/    F5C7 :                     ;-------------------------------------------------------------------------------
    1495/    F5C7 :                     ;Ausgabe hex 2 Byte Speicher (HL) und (HL-1)
    1496/    F5C7 :                     ;und ein Leerzeichen
    1497/    F5C7 :                     ;-------------------------------------------------------------------------------
    1498/    F5C7 :                     ;
    1499/    F5C7 : 7E                  OTHLS:	LD	A,(HL)			;hoeherwertiges Byte
    1500/    F5C8 : (MACRO)             	ROTHX				;ausgeben
    1500/    F5C8 : E7                          RST     20H
    1500/    F5C9 : 06                          DB      06h                     ; OUTHX
    1501/    F5CA : 2B                  	DEC	HL
    1502/    F5CB : 7E                  	LD	A,(HL)			;niederwertiges Byte
    1503/    F5CC : (MACRO)             	ROTHX				;ausgeben
    1503/    F5CC : E7                          RST     20H
    1503/    F5CD : 06                          DB      06h                     ; OUTHX
    1504/    F5CE : 2B                  	DEC	HL			;naechsten Aufruf vorbereiten
    1505/    F5CF :                     ;
    1506/    F5CF :                     ;-------------------------------------------------------------------------------
    1507/    F5CF :                     ;Ausgabe ein Leerzeichen
    1508/    F5CF :                     ;-------------------------------------------------------------------------------
    1509/    F5CF :                     ;
    1510/    F5CF : (MACRO)             OUTSP:	RPRST
    1510/    F5CF : E7                          RST     20H
    1510/    F5D0 : 02                          DB      02h                     ; PRST
    1511/    F5D1 : A0                  	DB	' '+80H
    1512/    F5D2 : C9                  	RET
    1513/    F5D3 :                     ;
    1514/    F5D3 :                     ;-------------------------------------------------------------------------------
    1515/    F5D3 :                     ;Registermodifizerung und -anzeige
    1516/    F5D3 :                     ;-------------------------------------------------------------------------------
    1517/    F5D3 :                     ;
    1518/    F5D3 :                     ;Z-Flag-Anzeige
    1519/    F5D3 :                     ;
    1520/    F5D3 : (MACRO)             AUS1:	RPRST				;Ausg. "1 "
    1520/    F5D3 : E7                          RST     20H
    1520/    F5D4 : 02                          DB      02h                     ; PRST
    1521/    F5D5 : 31                  	DB	"1"
    1522/    F5D6 : A0                  	DB	' '+80H
    1523/    F5D7 : C9                  	RET
    1524/    F5D8 : 20 F9               AUSX:	JR	NZ, AUS1
    1525/    F5DA : (MACRO)             	RPRST				;Ausg. "0 "
    1525/    F5DA : E7                          RST     20H
    1525/    F5DB : 02                          DB      02h                     ; PRST
    1526/    F5DC : 30                  	DB	"0"
    1527/    F5DD : A0                  	DB	' '+80H
    1528/    F5DE : C9                  	RET
    1529/    F5DF :                     ;
    1530/    F5DF :                     ; R-Kommando
    1531/    F5DF :                     ;
    1532/    F5DF : FE 3A               R_KDO:	CP	A, ':'
    1533/    F5E1 : C2 5A F6            	JP	NZ, RKO3		;wenn Modifizierung
    1534/    F5E4 :                     ;
    1535/    F5E4 : (MACRO)             REGDA:	RPRST				;Anzeige Breakpointadresse
    1535/    F5E4 : E7                          RST     20H
    1535/    F5E5 : 02                          DB      02h                     ; PRST
    1536/    F5E6 : 0D                  	DB	CR
    1537/    F5E7 : 42                  	DB	"B"			;"BP"
    1538/    F5E8 : D0                  	DB	'P'+80H
    1539/    F5E9 : 21 0C 00            	LD	HL,BPADR+1
    1540/    F5EC : (MACRO)             	ROTDP
    1540/    F5EC : E7                          RST     20H
    1540/    F5ED : 0D                          DB      0Dh                     ; OUTDP
    1541/    F5EE : (MACRO)             	RPRST				;Ausgabe Operandenfolge
    1541/    F5EE : E7                          RST     20H
    1541/    F5EF : 02                          DB      02h                     ; PRST
    1542/    F5F0 : 42 53               	DB	"BS"			;am Breakpoint
    1543/    F5F2 : BA                  	DB	':'+80H
    1544/    F5F3 : 06 03               	LD	B,3			;3 Byte
    1545/    F5F5 : 21 0D 00            	LD	HL,BPOPC
    1546/    F5F8 : 7E                  RKO1:	LD	A,(HL)
    1547/    F5F9 : (MACRO)             	ROTHX
    1547/    F5F9 : E7                          RST     20H
    1547/    F5FA : 06                          DB      06h                     ; OUTHX
    1548/    F5FB : 23                  	INC	HL
    1549/    F5FC : 10 FA               	DJNZ	RKO1
    1550/    F5FE :                     ;
    1551/    F5FE : (MACRO)             	RPRST				;Flaganzeige
    1551/    F5FE : E7                          RST     20H
    1551/    F5FF : 02                          DB      02h                     ; PRST
    1552/    F600 : 20 20 20 53 20 5A   	DB	"   S Z C"
                    20 43 
    1553/    F608 : A0                  	DB	' '+80H
    1554/    F609 : 3A 5B 00            	LD	A,(REGAF)		;A-Flagregister
    1555/    F60C : 6F                  	LD	L,A
    1556/    F60D : CB 7D               	BIT	7,L			;S-Flag
    1557/    F60F : CD D8 F5            	CALL	AUSX
    1558/    F612 : CB 75               	BIT	6,L			;Z-Flag
    1559/    F614 : CD D8 F5            	CALL	AUSX
    1560/    F617 : CB 45               	BIT	0,L			;Cy-Flag
    1561/    F619 : CD D8 F5            	CALL	AUSX
    1562/    F61C :                     ;
    1563/    F61C : 21 64 00            	LD	HL,REGSP+1		;Sonderregister-anzeige
    1564/    F61F : 06 02               	LD	B,2			;2 Registersaetze
    1565/    F621 : (MACRO)             	RPRST
    1565/    F621 : E7                          RST     20H
    1565/    F622 : 02                          DB      02h                     ; PRST
    1566/    F623 : 53                  RKO2:	DB	"S"
    1567/    F624 : D0                  	DB	'P'+80H
    1568/    F625 : (MACRO)             	ROTDP
    1568/    F625 : E7                          RST     20H
    1568/    F626 : 0D                          DB      0Dh                     ; OUTDP
    1569/    F627 : (MACRO)             	RPRST
    1569/    F627 : E7                          RST     20H
    1569/    F628 : 02                          DB      02h                     ; PRST
    1570/    F629 : 50                  	DB	"P"
    1571/    F62A : C3                  	DB	'C'+80H
    1572/    F62B : (MACRO)             	ROTDP
    1572/    F62B : E7                          RST     20H
    1572/    F62C : 0D                          DB      0Dh                     ; OUTDP
    1573/    F62D : (MACRO)             	RPRST
    1573/    F62D : E7                          RST     20H
    1573/    F62E : 02                          DB      02h                     ; PRST
    1574/    F62F : 49                  	DB	"I"
    1575/    F630 : D8                  	DB	'X'+80H
    1576/    F631 : (MACRO)             	ROTDP
    1576/    F631 : E7                          RST     20H
    1576/    F632 : 0D                          DB      0Dh                     ; OUTDP
    1577/    F633 : (MACRO)             	RPRST
    1577/    F633 : E7                          RST     20H
    1577/    F634 : 02                          DB      02h                     ; PRST
    1578/    F635 : 49                  	DB	"I"
    1579/    F636 : D9                  	DB	'Y'+80H
    1580/    F637 : (MACRO)             	ROTDP
    1580/    F637 : E7                          RST     20H
    1580/    F638 : 0D                          DB      0Dh                     ; OUTDP
    1581/    F639 :                     ;
    1582/    F639 : (MACRO)             RKO4:	RPRST				;Registersatz anzeigen
    1582/    F639 : E7                          RST     20H
    1582/    F63A : 02                          DB      02h                     ; PRST
    1583/    F63B : 41                  	DB	"A"
    1584/    F63C : C6                  	DB	'F'+80H
    1585/    F63D : (MACRO)             	ROTDP
    1585/    F63D : E7                          RST     20H
    1585/    F63E : 0D                          DB      0Dh                     ; OUTDP
    1586/    F63F : (MACRO)             	RPRST
    1586/    F63F : E7                          RST     20H
    1586/    F640 : 02                          DB      02h                     ; PRST
    1587/    F641 : 42                  	DB	"B"
    1588/    F642 : C3                  	DB	'C'+80H
    1589/    F643 : (MACRO)             	ROTDP
    1589/    F643 : E7                          RST     20H
    1589/    F644 : 0D                          DB      0Dh                     ; OUTDP
    1590/    F645 : (MACRO)             	RPRST
    1590/    F645 : E7                          RST     20H
    1590/    F646 : 02                          DB      02h                     ; PRST
    1591/    F647 : 44                  	DB	"D"
    1592/    F648 : C5                  	DB	'E'+80H
    1593/    F649 : (MACRO)             	ROTDP
    1593/    F649 : E7                          RST     20H
    1593/    F64A : 0D                          DB      0Dh                     ; OUTDP
    1594/    F64B : (MACRO)             	RPRST
    1594/    F64B : E7                          RST     20H
    1594/    F64C : 02                          DB      02h                     ; PRST
    1595/    F64D : 48                  	DB	"H"
    1596/    F64E : CC                  	DB	'L'+80H
    1597/    F64F : (MACRO)             	ROTDP
    1597/    F64F : E7                          RST     20H
    1597/    F650 : 0D                          DB      0Dh                     ; OUTDP
    1598/    F651 : 10 E6               	DJNZ	RKO4
    1599/    F653 :                     ;
    1600/    F653 : 2A 2B 00            	LD	HL,(CUPOS)		;2. Satz als Schatten-
    1601/    F656 : 2B                  	DEC	HL			;register markieren:
    1602/    F657 : 36 27               	LD	(HL),27H		;"'"
    1603/    F659 : C9                  	RET
    1604/    F65A :                     ;
    1605/    F65A : 01 00 04            RKO3:	LD	BC,0400H		;B=4, C-Registernummer
    1606/    F65D : 2A 16 00            	LD	HL,(SOIL)
    1607/    F660 : 23                  	INC	HL
    1608/    F661 : 23                  	INC	HL
    1609/    F662 : 11 23 F6            	LD	DE,RKO2
    1610/    F665 : 1A                  RKO5:	LD	A,(DE)			;Vergleich Registereingabe
    1611/    F666 : BE                  	CP	A, (HL)			;mit allen Registern
    1612/    F667 : 28 17               	JR	Z, RKO8			;wenn gefunden
    1613/    F669 : 13                  	INC	DE
    1614/    F66A : E5                  RKO6:	PUSH	HL
    1615/    F66B : 21 05 00            	LD	HL,5
    1616/    F66E : 19                  	ADD	HL,DE
    1617/    F66F : EB                  	EX	DE,HL			;naechster Reg.name
    1618/    F670 : E1                  	POP	HL
    1619/    F671 : 0C                  	INC	C			;C-Registernummer
    1620/    F672 : 10 F1               	DJNZ	RKO5
    1621/    F674 : 06 04               	LD	B,4
    1622/    F676 : 79                  	LD	A,C
    1623/    F677 : FE 08               	CP	A, 8
    1624/    F679 : 20 EA               	JR	NZ, RKO5		;weitersuchen
    1625/    F67B : F1                  	POP	AF			;sonst falsche Eingabe
    1626/    F67C : FF                  	RST	38H			;--> zum KDO-Monitor
    1627/    F67D :                     ;
    1628/    F67D : 2B                  RKO7:	DEC	HL			;weitersuchen
    1629/    F67E : 18 EA               	JR	RKO6
    1630/    F680 :                     ;
    1631/    F680 : 13                  RKO8:	INC	DE			;Ueberpruefen zweiter
    1632/    F681 : 23                  	INC	HL			;Buchstabe
    1633/    F682 : 1A                  	LD	A,(DE)
    1634/    F683 : E6 7F               	AND	A, 7FH
    1635/    F685 : BE                  	CP	A, (HL)
    1636/    F686 : 20 F5               	JR	NZ, RKO7		;wenn ungleich
    1637/    F688 : 23                  	INC	HL
    1638/    F689 : 7E                  	LD	A,(HL)			;Schattenregister ?
    1639/    F68A : FE 27               	CP	A, 27H			;"'"
    1640/    F68C : 79                  	LD	A,C
    1641/    F68D : 20 02               	JR	NZ, RKO9		;wenn nicht
    1642/    F68F : C6 04               	ADD	A, 4
    1643/    F691 : CB 27               RKO9:	SLA	A
    1644/    F693 : 4F                  	LD	C,A
    1645/    F694 : 06 00               	LD	B,0
    1646/    F696 : 21 64 00            	LD	HL,REGSP+1
    1647/    F699 : ED 42               	SBC	HL,BC
    1648/    F69B : 44                  	LD	B,H			;HL=Adresse im
    1649/    F69C : 4D                  	LD	C,L			;Registerrettebereich
    1650/    F69D : (MACRO)             	ROTHS				;Ausgabe Wert
    1650/    F69D : E7                          RST     20H
    1650/    F69E : 0C                          DB      0Ch                     ; OTHLS
    1651/    F69F : CD B3 F2            	CALL	INLIN			;Eingabe neuer Wert
    1652/    F6A2 : ED 5B 16 00         	LD	DE,(SOIL)
    1653/    F6A6 : CD F4 F2            	CALL	INHEX			;HL=neuer Wert
    1654/    F6A9 : 20 04               	JR	NZ, RKO10		;wenn alles ok
    1655/    F6AB : 1A                  	LD	A,(DE)			;keine Zahl, vielleicht
    1656/    F6AC : FE 3B               	CP	A, ';'			;Abbruch ?
    1657/    F6AE : C8                  	RET	Z
    1658/    F6AF :                     ;
    1659/    F6AF : EB                  RKO10:	EX	DE,HL
    1660/    F6B0 : C5                  	PUSH	BC
    1661/    F6B1 : E1                  	POP	HL			;Adr. im Reg.rettebereich
    1662/    F6B2 : 72                  	LD	(HL),D			;neuen Wert eintragen
    1663/    F6B3 : 2B                  	DEC	HL
    1664/    F6B4 : 73                  	LD	(HL),E
    1665/    F6B5 : C3 E4 F5            	JP	REGDA			;Registeranzeige
    1666/    F6B8 :                     
    1667/    F6B8 : =>TRUE              	IF MONTYP == "Z1013_202"
    1668/    F6B8 :                     ;
    1669/    F6B8 :                     ;-------------------------------------------------------------------------------
    1670/    F6B8 :                     ;Hex-Umschaltung
    1671/    F6B8 :                     ;-------------------------------------------------------------------------------
    1672/    F6B8 :                     ;
    1673/    F6B8 : 21 48 50            H_KDO:	ld	hl,5048h		;Aenderung der Tastaturcodetab.
    1674/    F6BB : 22 42 00            	ld	(LSYNC+15),hl		;Shift-Ebene 1, Zeile 2 und 3
    1675/    F6BE : 21 30 38            	ld	hl,3830h		;vertauschen mit
    1676/    F6C1 : 22 45 00            	ld	(LSYNC+18),hl		;Shift-Ebene 0, Zeile 2 und 3
    1677/    F6C4 : C9                  	RET
    1678/    F6C5 :                     ;
    1679/    F6C5 :                     ;-------------------------------------------------------------------------------
    1680/    F6C5 :                     ;ASCII-Umschaltung
    1681/    F6C5 :                     ;-------------------------------------------------------------------------------
    1682/    F6C5 :                     ;
    1683/    F6C5 : 21 F4 F1            A_KDO:	ld	hl,MONTB+2		;Laden der alten
    1684/    F6C8 : 11 35 00            	ld	de,LSYNC+2		;Tastaturcodetab.
    1685/    F6CB : 01 12 00            	ld	bc,12h
    1686/    F6CE : ED B0               	ldir
    1687/    F6D0 : C9                  	RET
    1688/    F6D1 :                     
    1689/    F6D1 : [1667]              	ENDIF
    1690/    F6D1 :                     ;
    1691/    F6D1 :                     ;-------------------------------------------------------------------------------
    1692/    F6D1 :                     ;Window definieren
    1693/    F6D1 :                     ;-------------------------------------------------------------------------------
    1694/    F6D1 :                     ;
    1695/    F6D1 : CD ED F6            W_KDO:	CALL	WKO1			;Kontrolle Parameter
    1696/    F6D4 : 38 4C               	JR	C, WKO3			;wenn Fehleingabe
    1697/    F6D6 : 22 47 00            	LD	(WINDL),HL		;neue Werte eintragen
    1698/    F6D9 : ED 43 49 00         	LD	(WINDA),BC
    1699/    F6DD : 2A 1D 00            	LD	HL,(ARG2)
    1700/    F6E0 : 22 4B 00            	LD	(WINDE),HL
    1701/    F6E3 : 2A 2B 00            	LD	HL,(CUPOS)		;Cursor loeschen
    1702/    F6E6 : 36 20               	LD	(HL),' '
    1703/    F6E8 : ED 43 2B 00         	LD	(CUPOS),BC		;Cursor home
    1704/    F6EC : C9                  	RET
    1705/    F6ED :                     ;
    1706/    F6ED : 3A 1C 00            WKO1:	LD	A,(ARG1+1)
    1707/    F6F0 : FE EC               	CP	A, hi(BWS)		;innerhalb BWS ?
    1708/    F6F2 : D8                  	RET	C			;nein
    1709/    F6F3 : 3A 1B 00            	LD	A,(ARG1)		;WINDOW-Anfang
    1710/    F6F6 : E6 E0               	AND	A, 0E0H			;auf Zeilenanfang stellen
    1711/    F6F8 : 32 1B 00            	LD	(ARG1),A
    1712/    F6FB : 3A 1D 00            	LD	A,(ARG2)		;ebenso WINDOW-Ende
    1713/    F6FE : E6 E0               	AND	A, 0E0H			;auf Zeilenanfang stellen
    1714/    F700 : 32 1D 00            	LD	(ARG2),A
    1715/    F703 : 2A 1D 00            	LD	HL,(ARG2)
    1716/    F706 : ED 4B 1B 00         	LD	BC,(ARG1)
    1717/    F70A : ED 42               	SBC	HL,BC
    1718/    F70C : D8                  	RET	C			;Endadresse zu klein
    1719/    F70D : 28 11               	JR	Z, WKO2			;kein Window --> Fehler
    1720/    F70F : 2B                  	DEC	HL
    1721/    F710 : 3E 03               	LD	A,3			;WINDOW zu gross ?
    1722/    F712 : BC                  	CP	A, H
    1723/    F713 : D8                  	RET	C			;ja
    1724/    F714 : 23                  	INC	HL
    1725/    F715 : 11 40 00            	LD	DE,2*BWSCOL
    1726/    F718 : ED 52               	SBC	HL,DE
    1727/    F71A : D8                  	RET	C			;wenn WINDOW zu klein
    1728/    F71B : 11 20 00            	LD	DE,BWSCOL
    1729/    F71E : 19                  	ADD	HL,DE
    1730/    F71F : C9                  	RET
    1731/    F720 :                     ;
    1732/    F720 : 37                  WKO2:	SCF
    1733/    F721 : C9                  	RET
    1734/    F722 :                     ;
    1735/    F722 : F1                  WKO3:	POP	AF
    1736/    F723 : FF                  	RST	38H
    1737/    F724 :                     ;
    1738/    F724 :                     ;-------------------------------------------------------------------------------
    1739/    F724 :                     ;NEXT-Kommando, Step-Betrieb
    1740/    F724 :                     ;-------------------------------------------------------------------------------
    1741/    F724 :                     ;
    1742/    F724 :                     ;Initialisierungstabelle fuer PIO bei NEXT
    1743/    F724 :                     ;PIO B5 => AB0 in
    1744/    F724 :                     ;
    1745/    F724 : FE                  NKTA:	DB	Lo(NINTA)		;Interruptvektor Low Byte
    1746/    F725 : 97                  	DB	10010111b		;Interruptsteuerwort, EI, Low-aktiv, Mask folgt
    1747/    F726 : DF                  	DB	11011111b		;Interruptmaske Bit5 aktiv
    1748/    F727 :                     ;
    1749/    F727 :                     ;NEXT-Kommando
    1750/    F727 :                     ;
    1751/    F727 : 3E F7               N_KDO:	LD	A,Hi(NINTA)
    1752/    F729 : ED 47               	LD	I,A			;Interruptvektor
    1753/    F72B : F3                  	DI
    1754/    F72C : 21 24 F7            	LD	HL,NKTA 		;Initialisieren PIO Port B
    1755/    F72F : 01 03 03            	LD	BC,0303H		;3 Bytes, Port PIOBC
    1756/    F732 : ED B3               	OTIR				;loest selbstaendig INT aus
    1757/    F734 : 2A 0B 00            	LD	HL,(BPADR)		;Byte vor Breakadr.(!)
    1758/    F737 : 2B                  	DEC	HL			;wird EI
    1759/    F738 : 7E                  	LD	A,(HL)
    1760/    F739 : 32 69 00            	LD	(NBYTE),A		;Byte retten
    1761/    F73C : 36 FB               	LD	(HL),0FBH		;Code EI einschreiben
    1762/    F73E : ED 73 6A 00         	LD	(SPADR),SP
    1763/    F742 : ED 7B 63 00         	LD	SP,(REGSP)
    1764/    F746 : E5                  	PUSH	HL			;Adr. mit EI-Befehl
    1765/    F747 : C3 4A F5            	JP	REGH			;Register holen und Start
    1766/    F74A :                     ;Die PIO generiert bereits beim OTIR eine Interruptanforderung, da dabei AB0 => 0.
    1767/    F74A :                     ;Sobald EI und nachfolgender Befehl ausgeführt wird, wird der Interrupt angenommen
    1768/    F74A :                     ;und nachfolgende Routine über Inhalt der Adr. NINTA angesprungen (da IM 2)
    1769/    F74A :                     ;
    1770/    F74A :                     ;Eingang bei Interrupt
    1771/    F74A : F3                  NINTR:	DI
    1772/    F74B : CD 33 F5            	CALL	REGA			;Register retten
    1773/    F74E : 3E 07               	LD	A,00000111b		;Interrupt von PIO
    1774/    F750 : D3 03               	OUT	PIOBC, A		;verbieten
    1775/    F752 : 2A 0B 00            	LD	HL,(BPADR)		;EI-Befehl durch Original-
    1776/    F755 : 2B                  	DEC	HL			;Byte ersetzen
    1777/    F756 : 3A 69 00            	LD	A,(NBYTE)
    1778/    F759 : 77                  	LD	(HL),A
    1779/    F75A : E1                  	POP	HL
    1780/    F75B : 22 0B 00            	LD	(BPADR),HL		;neue Breakadresse
    1781/    F75E : 22 61 00            	LD	(REGPC),HL
    1782/    F761 : ED 73 63 00         	LD	(REGSP),SP
    1783/    F765 : ED 7B 6A 00         	LD	SP,(SPADR)		;neue Operandenfolge
    1784/    F769 : 11 0D 00            	LD	DE,BPOPC		;umladen
    1785/    F76C : 01 03 00            	LD	BC,3
    1786/    F76F : ED B0               	LDIR
    1787/    F771 : 21 E4 F5            	LD	HL,REGDA
    1788/    F774 : E5                  	PUSH	HL
    1789/    F775 : ED 4D               	RETI				;Sprung zur Registeranzeige
    1790/    F777 :                     ;
    1791/    F777 :                     ;-------------------------------------------------------------------------------
    1792/    F777 :                     ;Speicherbereiche vergleichen
    1793/    F777 :                     ;-------------------------------------------------------------------------------
    1794/    F777 :                     ;
    1795/    F777 : CD FF F4            C_KDO:	CALL	PARA			;Parameter holen
    1796/    F77A : 1A                  CKO1:	LD	A,(DE)
    1797/    F77B : BE                  	CP	A, (HL)			;Vergleich
    1798/    F77C : 20 08               	JR	NZ, CKO3		;wenn ungleich
    1799/    F77E : 0B                  CKO2:	DEC	BC
    1800/    F77F : 23                  	INC	HL
    1801/    F780 : 13                  	INC	DE
    1802/    F781 : 78                  	LD	A,B
    1803/    F782 : B1                  	OR	C
    1804/    F783 : C8                  	RET	Z			;wenn alles geprueft
    1805/    F784 : 18 F4               	JR	CKO1			;sonst weitertesten
    1806/    F786 :                     ;
    1807/    F786 : (MACRO)             CKO3:	ROTHL				;1. Adresse
    1807/    F786 : E7                          RST     20H
    1807/    F787 : 07                          DB      07h                     ; OUTHL
    1808/    F788 : (MACRO)             	ROTSP
    1808/    F788 : E7                          RST     20H
    1808/    F789 : 0E                          DB      0Eh                     ; OUTSP
    1809/    F78A : 7E                  	LD	A,(HL)
    1810/    F78B : (MACRO)             	ROTHX				;1. Byte
    1810/    F78B : E7                          RST     20H
    1810/    F78C : 06                          DB      06h                     ; OUTHX
    1811/    F78D : (MACRO)             	ROTSP
    1811/    F78D : E7                          RST     20H
    1811/    F78E : 0E                          DB      0Eh                     ; OUTSP
    1812/    F78F : EB                  	EX	DE,HL
    1813/    F790 : (MACRO)             	ROTHL				;2. Adresse
    1813/    F790 : E7                          RST     20H
    1813/    F791 : 07                          DB      07h                     ; OUTHL
    1814/    F792 : (MACRO)             	ROTSP
    1814/    F792 : E7                          RST     20H
    1814/    F793 : 0E                          DB      0Eh                     ; OUTSP
    1815/    F794 : EB                  	EX	DE,HL
    1816/    F795 : 1A                  	LD	A,(DE)
    1817/    F796 : (MACRO)             	ROTHX				;2. Byte
    1817/    F796 : E7                          RST     20H
    1817/    F797 : 06                          DB      06h                     ; OUTHX
    1818/    F798 : (MACRO)             	RPRST
    1818/    F798 : E7                          RST     20H
    1818/    F799 : 02                          DB      02h                     ; PRST
    1819/    F79A : 8D                  	DB	CR+80H
    1820/    F79B : (MACRO)             	RINCH				;warten auf Tastendruck
    1820/    F79B : E7                          RST     20H
    1820/    F79C : 01                          DB      01h                     ; INCH
    1821/    F79D : FE 0D               	CP	A, CR
    1822/    F79F : C0                  	RET	NZ			;Abbruch wenn <> >ENTER<
    1823/    F7A0 : 18 DC               	JR	CKO2			;sonst weitertesten
    1824/    F7A2 :                     
    1825/    F7A2 : =>TRUE              	IF	MONTYP <> "Z1013_A2"
    1826/    F7A2 :                     ;
    1827/    F7A2 :                     ;-------------------------------------------------------------------------------
    1828/    F7A2 :                     ;Bytefolge suchen
    1829/    F7A2 :                     ;-------------------------------------------------------------------------------
    1830/    F7A2 :                     ;
    1831/    F7A2 : ED 5B 25 00         F_KDO:	LD	DE,(SOIL2)
    1832/    F7A6 : 1B                  	DEC	DE
    1833/    F7A7 : 1B                  	DEC	DE
    1834/    F7A8 : ED 53 23 00         	LD	(ARG3),DE		;DE = Beginn Bytefolge
    1835/    F7AC : ED 4B 1B 00         	LD	BC,(ARG1)		;Suchadresse
    1836/    F7B0 : ED 5B 23 00         FKO1:	LD	DE,(ARG3)
    1837/    F7B4 : (MACRO)             	RINHX				;L = 1. Suchbyte
    1837/    F7B4 : E7                          RST     20H
    1837/    F7B5 : 03                          DB      03h                     ; INHEX
    1838/    F7B6 : 0A                  FKO2:	LD	A,(BC)
    1839/    F7B7 : BD                  	CP	A, L			;L = Suchbyte
    1840/    F7B8 : 28 07               	JR	Z, FKO3			;wenn Bytes gleich
    1841/    F7BA : 03                  	INC	BC			;sonst naechste Suchadresse
    1842/    F7BB : 78                  	LD	A,B
    1843/    F7BC : B1                  	OR	C
    1844/    F7BD : 28 32               	JR	Z, FKO7			;wenn Speicherende erreicht
    1845/    F7BF : 18 F5               	JR	FKO2			;weitersuchen
    1846/    F7C1 :                     ;
    1847/    F7C1 : C5                  FKO3:	PUSH	BC
    1848/    F7C2 : D5                  	PUSH	DE
    1849/    F7C3 : ED 5B 1D 00         	LD	DE,(ARG2)		;Suchbyteanzahl
    1850/    F7C7 : 1B                  	DEC	DE
    1851/    F7C8 : ED 53 6C 00         	LD	(FBANZ),DE		;Zwischenspeicher fuer Anzahl
    1852/    F7CC : 03                  	INC	BC
    1853/    F7CD : 7A                  FKO4:	LD	A,D
    1854/    F7CE : B3                  	OR	E			;alle Suchbytes verglichen?
    1855/    F7CF : D1                  	POP	DE
    1856/    F7D0 : 28 13               	JR	Z, FKO5			;wenn Bytefolge gefunden
    1857/    F7D2 : (MACRO)             	RINHX				;naechstes Suchbyte holen
    1857/    F7D2 : E7                          RST     20H
    1857/    F7D3 : 03                          DB      03h                     ; INHEX
    1858/    F7D4 : 0A                  	LD	A,(BC)
    1859/    F7D5 : BD                  	CP	A, L
    1860/    F7D6 : 20 15               	JR	NZ, FKO6		;wenn Folge nicht gefunden
    1861/    F7D8 : D5                  	PUSH	DE
    1862/    F7D9 : ED 5B 6C 00         	LD	DE,(FBANZ)		;1 Byte weniger zu vergleichen
    1863/    F7DD : 1B                  	DEC	DE
    1864/    F7DE : ED 53 6C 00         	LD	(FBANZ),DE
    1865/    F7E2 : 03                  	INC	BC
    1866/    F7E3 : 18 E8               	JR	FKO4			;weitervergleichen
    1867/    F7E5 :                     ;Bytefolge gefunden
    1868/    F7E5 : C1                  FKO5:	POP	BC
    1869/    F7E6 : ED 43 1B 00         	LD	(ARG1),BC
    1870/    F7EA : C3 25 F3            	JP	MEM			;Speicher modifizieren
    1871/    F7ED :                     ;
    1872/    F7ED : C1                  FKO6:	POP	BC
    1873/    F7EE : 03                  	INC	BC
    1874/    F7EF : 18 BF               	JR	FKO1
    1875/    F7F1 :                     ;Bytefolge nirgends gefunden
    1876/    F7F1 : (MACRO)             FKO7:	RPRST
    1876/    F7F1 : E7                          RST     20H
    1876/    F7F2 : 02                          DB      02h                     ; PRST
    1877/    F7F3 : 4E 4F 54 20 46 4F   	DB	"NOT FOUND"
                    55 4E 44 
    1878/    F7FC : 8D                  	DB	CR+80H
    1879/    F7FD : C9                  	RET
    1880/    F7FE :                     
    1881/    F7FE : [1825]              	ENDIF
    1882/    F7FE :                     
    1883/    F7FE : =>FALSE             	IF MONTYP == "Z1013_A2"
    1884/    F7FE :                     ;
    1885/    F7FE :                     ;-------------------------------------------------------------------------------
    1886/    F7FE :                     ; Tastaturcodetabelle
    1887/    F7FE :                     ;-------------------------------------------------------------------------------
    1888/    F7FE :                     ;
    1889/    F7FE :                     keytab:
    1890/    F7FE :                     ; spalte 0
    1891/    F7FE :                     	db  31h ; 1
    1892/    F7FE :                     	db  51h ; Q
    1893/    F7FE :                     	db  41h ; A
    1894/    F7FE :                     	db  59h ; Y
    1895/    F7FE :                     	db  32h ; 2
    1896/    F7FE :                     	db  57h ; W
    1897/    F7FE :                     	db  53h ; S
    1898/    F7FE :                     	db  58h ; X
    1899/    F7FE :                     ; Spalte 1
    1900/    F7FE :                     	db  33h ; 3
    1901/    F7FE :                     	db  45h ; E
    1902/    F7FE :                     	db  44h ; D
    1903/    F7FE :                     	db  43h ; C
    1904/    F7FE :                     	db  34h ; 4
    1905/    F7FE :                     	db  52h ; R
    1906/    F7FE :                     	db  46h ; F
    1907/    F7FE :                     	db  56h ; V
    1908/    F7FE :                     ; Spalte 2
    1909/    F7FE :                     	db  35h ; 5
    1910/    F7FE :                     	db  54h ; T
    1911/    F7FE :                     	db  47h ; G
    1912/    F7FE :                     	db  42h ; B
    1913/    F7FE :                     	db  36h ; 6
    1914/    F7FE :                     	db  5Ah ; Z
    1915/    F7FE :                     	db  48h ; H
    1916/    F7FE :                     	db  4Eh ; N
    1917/    F7FE :                     ; Spalte 3
    1918/    F7FE :                     	db  37h ; 7
    1919/    F7FE :                     	db  55h ; U
    1920/    F7FE :                     	db  4Ah ; J
    1921/    F7FE :                     	db  4Dh ; M
    1922/    F7FE :                     	db  38h ; 8
    1923/    F7FE :                     	db  49h ; I
    1924/    F7FE :                     	db  4Bh ; K
    1925/    F7FE :                     	db  2Ch ; ,
    1926/    F7FE :                     ; Spalte 4
    1927/    F7FE :                     	db  39h ; 9
    1928/    F7FE :                     	db  4Fh ; O
    1929/    F7FE :                     	db  4Ch ; L
    1930/    F7FE :                     	db  2Eh ; .
    1931/    F7FE :                     	db  30h ; 0
    1932/    F7FE :                     	db  50h ; P
    1933/    F7FE :                     	db  2Bh ; +
    1934/    F7FE :                     	db  2Fh ; /
    1935/    F7FE :                     ; Spalte 5
    1936/    F7FE :                     	db  2Dh ; -
    1937/    F7FE :                     	db  40h ; @
    1938/    F7FE :                     	db  2Ah ; *
    1939/    F7FE :                     	db  5Eh ; ^
    1940/    F7FE :                     	db  5Bh ; [
    1941/    F7FE :                     	db  5Dh ; ]
    1942/    F7FE :                     	db  5Ch ;
    1943/    F7FE :                     	db  5Fh ; _
    1944/    F7FE :                     ; Spalte 6
    1945/    F7FE :                     tab2:	db    0 ; Graph E/A
    1946/    F7FE :                     	db  0Dh ; ENT
    1947/    F7FE :                     	db    8 ; Cu. links
    1948/    F7FE :                     	db    9 ; Cu. rechts
    1949/    F7FE :                     	db  20h ; Leerz.
    1950/    F7FE :                     	db    0 ; CTRL
    1951/    F7FE :                     	db  0Bh ; Cu. hoch
    1952/    F7FE :                     	db  0Ah ; Cu. runter
    1953/    F7FE :                     
    1954/    F7FE : [1883]              	ENDIF
    1955/    F7FE :                     
    1956/    F7FE :                     ;
    1957/    F7FE :                     ;-------------------------------------------------------------------------------
    1958/    F7FE :                     ;Interrupttabelle fuer Break
    1959/    F7FE :                     ;-------------------------------------------------------------------------------
    1960/    F7FE :                     ;
    1961/    F7FE :                     
    1962/    F7FE :                     	align	2
    1963/    F7FE : 4A F7               NINTA:	DW	NINTR
    1964/    F800 :                     
    1965/    F800 :                     	END
  • z1013/software/monitor/riesa202.txt
  • Zuletzt geändert: 2012/11/04 14:20
  • von volkerp