Kosmos CP-1 Computer-Praxis

Kosmos CP-1 Computer-Praxis

Maschinencode, Assembler, Reverse Engineering, Dis-Assembliert

cp1_01

 

CPU: Intel 8039

cp1_schnelluebersicht-01 cp1_schnelluebersicht-02

CP1-v01.asm.txt

 

; Titel:     Kosmos CP1 Virtual Mnemonics Code
; Dateiname: CP1-v01.adm
; Quelle:    Original ab "CP1.bin" EEPROM.
; Autor:     Dr.-Ing. Karl Steinbuch, ehem. ord. Professor für, Nachrichtenverarbeitung, an der Universität Karlsruhe (TH).
;
; 2017-11nov-05 - Dis-Assembliert und Kommentiert von Michael Mustun, michael.mustun AT gmail.com
;
; Irgendwo muss sein:
; Ein paar fertige Programme sind schon im ROM integriert (z.B. Selbsttest und Reaktionstest)
; - Selbsttest
; - Reaktionstest
;
;
; 1.5 Das erste Programm - ein Test
; Wir haben den Computer eingeschaltet, mit der
; CLR-Irrtums-Taste haben wir die Anzeige gelöscht.
; Das kleine rote Pünktchen zeigt uns, daß das Gerät
; betriebsbereit ist. Nun sollten wir überprüfen, ob
; der Computer auch funktioniert. Lassen Sie ihn das
; selbst machen: drücken Sie nacheinander
;   [ 9 ]  [ RUN ]
; Auf der Anzeige erscheint in rascher Folge 999999,
; 888888, 777777 usw. . . . Mit 000000 beendet der
; Computer das Selbstprüfungsprogramm. Sie können es gleich wiederholen, indem Sie entweder mit
; CLR die Anzeige löschen und 9-RUN drücken,
; oder indem Sie auf CLR verzichten und gleich
; 9-RUN eintippen. Probieren wir's aus. Jetzt darf
; man sicher sein, daß der Computer funktioniert.
;
; 1.6 Das zweite Programm - ein Reaktionsspiel
; Lassen Sie uns zur Entspannung ein kleines Spielchen machen. Nicht daß Sie denken, wir wollten
; uns jetzt einem unnützen Zeitvertreib zuwenden:
; es ist ein Spiel mit einem ernsten Hintergrund.
; Überprüfen Sie Ihre Reaktionsfähigkeit. Im Computer ist ein Reaktionstest vorprogrammiert. Die
; "8" ist hierfür die Programmziffer, mit RUN lösen
; Sie das Programm aus. Drücken Sie
;   [ 8 ]  [ RUN ]
; Im Anzeigenfeld ist zunächst nichts zu sehen; dann
; aber läßt der Computer Zahlen rasen und zwar in
; Schritten von 1/1000 Sekunden. Sie sollten nun
; versuchen, den Zahlenlauf so schnell wie möglich
; mit Hilfe der STP-Taste zu stoppen. Auf geht's!
;   [ 8 ] [ RUN ] ... [ STP ]
; Wenn Sie es mehrmals machen, werden Sie feststellen, daß der Zeitpunkt, an dem der Computer
; zu zählen anfängt, immer unterschiedlich ist. Sonst
; wäre es ja auch schnell langweilig. Sollten Sie im
; Eifer die STP-Taste gedrückt haben, bevor der
; Computer angefangen hat zu zählen, erscheint
; nach kurzer Zeit „000". Schummeln gilt nicht.
; Der ernste Hintergrund dieses netten Spielchens:
; Der Staat billigt einem Autofahrer bei Gefahr eine
; „Schrecksekunde" von 0,25 Sekunden zu, innerhalb dieses Zeitraumes muß der Autofahrer reagiert haben. Aber Sie lagen bestimmt unter 0,250
; Sekunden. Mit weniger als 0,150 (Anzeige .150)
; sind Sie Spitzenklasse, und bei Zeiten unter 0,100
; Sekunden (Anzeige .100) sind Sie reif für das
; Guinness-Buch der Rekorde.
; Bei diesem Spiel haben Sie nun noch eine weitere
; Funktionstaste kennengelernt. Die STP-Taste.* Mit
; ihr können Sie Programme, die im Computer ablaufen, unterbrechen und mit der RUN-Taste dann
; wieder weiterlaufen lassen. Eine Ausnahme: das
; Selbst-Überprüfungsprogramm kann man nicht
; stoppen. Wozu auch?!
; (Quelle: KOSMOS Computer Praxis CP 1, 1. Auflage 1983, Kapitel 1.5 und 1.6, Seite 8.)
;
;
;
;
; HLT 01.000 - Halt
;
; ANZ 02.000 - Anzeigen (Akku anzeigen)
;
; VZG 03.nnn - Verzögerung
; COMMAND_VZG_03:
; 07c7:
;
; AKO 04.nnn - Konstante nnn in Akku laden
;
; LDA 05.nnn - Inhalt von Zelle nnn in Akku laden
;
; ABS 06.nnn - Akku-Inhalt in Zelle nnn speichern
;
; ADD 07.nnn - Zum Akku-Inhalt den Inhalt von Zelle nnn addieren. Ergebnis im Akku.
;
; SUB 08.nnn - Zum Akku-Inhalt den Inhalt von Zelle nnn subtrahieren. Ergebnis im Akku.
;
; SPU 09.nnn - Unbedingt auf Adresse nnn springen.
;
; VGL 10.nnn - Prüfen, ob Akku-Inhalt gleich Inhalt von Zelle nnn.
;
; SPB 11.nnn - Bedingt auf Adresse nnn springen.
;
; VGR 12.nnn - Prüfen, ob Akku-Inhalt grössser als Inhalt von Zelle nnn.
;
; VKL 13.nnn - Prüfen, ob Akku-Inhalt kleiner als Inhalt von Zelle nnn.
;
; NEG 14.nnn - Akku-Inhalt negieren (nur "0" oder "1").
;
; UND 15.nnn - UND-Verknüpfung zwischen Akku-Inhalt und Inhalt von Zelle nnn (nur "0" oder "1").
;
; P1E 16.00n - Information an Klemme n von Port 1 in den Akku bringen ("0" oder "1").
;     16.000 - Information an Klemmen von Port 1 in eine Dezimalzahl wandeln und in den Akku bringen.
;
;
; P1A 17.00n - Akku Inhalt ("0" oder "1") an Port 1 Klemme n bringen.
;     17.000 - Dezimalen Akku-Inhalt in eine Dual-Zahl wandeln und an Port 1 bringen.
;
; P2A 18.00n -
;     18.000 -
;
; LIA 19.nnn - Akku indirekt laden
;
; AIS 20.nnn - Akku-Inhalt indirekt speichern
;
; SUI 21.nnn - Indirekt unbedingt springen
;
; *)P3E 22.00n - Information an Port 3 in den Akku bringen ("0" oder "1").
;       22.000 - 
;
; *)P4A 23.00n -
;       23.000 -
;
; *)P5A 24.00n -
;       24.000 -
;
; *) Nur für Speichererweiterung
;
;
;
;
; Tastatur einlesen und interpretieren
;
;
; Eingegebenes Programm und Daten speichern
;
; Programm Anzeigen
;
; Einzelschritt Ausführung
;
;
; Fehlermeldungen (F 001 bis F 007)
;
; F 001
; F 002
; F 003
; F 004
; F 005
; F 006
; F 007
;



init_0:

0000:	0429	jmp  $0029	; start_0:

; DATA?
0002:	00	nop
0003:	93	retr
0004:	00	nop
0005:	00	nop
0006:	00	nop
0007:	445c	jmp  $025C
0009:	00	nop
000a:	86d1	jni  $00D1
000c:	d1	xrl  a,@r1
000d:	d1	xrl  a,@r1
000e:	d1	xrl  a,@r1
000f:	d1	xrl  a,@r1
0010:	d1	xrl  a,@r1
0011:	d1	xrl  a,@r1
0012:	d1	xrl  a,@r1
0013:	d1	xrl  a,@r1
0014:	d1	xrl  a,@r1
0015:	21	xch  a,@r1
0016:	eb23	djnz r3,$0023
0018:	25	en   tcnti
0019:	861f	jni  $001F
001b:	27	clr  a
001c:	c3	.db   0xc3
001d:	98bf	anl  bus,#$BF
001f:	c403	jmp  $0603
0021:	24ff	jmp  $01FF
0023:	e40e	jmp  $070E
0025:	c422	jmp  $0622
0027:	24c4	jmp  $01C4


start_0:
0029:	b81e	mov  r0,#$1E	; 0x1E  30 dec
002b:	b000	mov  @r0,#$0
002d:	b820	mov  r0,#$20	; 0x20  32 dec
002f:	bb28	mov  r3,#$28	; 0x28  40 dec

loop_1:
0031:	b000	mov  @r0,#$0
0033:	18	inc  r0
0034:	eb31	djnz r3,$0031	; decrement r3 and jump to loop_1: if r3 is not zero
0036:	be00	mov  r6,#$0
0038:	bf00	mov  r7,#$0
003a:	b81a	mov  r0,#$1A
003c:	b001	mov  @r0,#$1
003e:	d4b4	call $06B4
0040:	9acf	anl  p2,#$CF	; 1100'1111
0042:	9abf	anl  p2,#$BF	; 1011'1111
0044:	9aef	anl  p2,#$EF	; 1110'1111
0046:	8a20	orl  p2,#$20	; 0010'0000
0048:	b800	mov  r0,#$0
004a:	230f	mov  a,#$F
004c:	90	movx @r0,a
004d:	b802	mov  r0,#$2
004f:	23ff	mov  a,#$FF
0051:	90	movx @r0,a
0052:	9adf	anl  p2,#$DF
0054:	8a10	orl  p2,#$10
0056:	b800	mov  r0,#$0
0058:	230d	mov  a,#$D
005a:	90	movx @r0,a
005b:	b801	mov  r0,#$1
005d:	23ff	mov  a,#$FF
005f:	90	movx @r0,a
0060:	b803	mov  r0,#$3
0062:	90	movx @r0,a
0063:	9a5f	anl  p2,#$5F
0065:	8a10	orl  p2,#$10
0067:	b813	mov  r0,#$13
0069:	235a	mov  a,#$5A
006b:	90	movx @r0,a
006c:	27	clr  a
006d:	80	movx a,@r0
006e:	d35a	xrl  a,#$5A
0070:	b83b	mov  r0,#$3B
0072:	c694	jz   $0094	; label_2:
0074:	b07f	mov  @r0,#$7F
0076:	bb04	mov  r3,#$4
0078:	b83f	mov  r0,#$3F
007a:	23ff	mov  a,#$FF



;; run im Schrittmodus ?

loop_3:
007c:	a0	mov  @r0,a
007d:	18	inc  r0
007e:	eb7c	djnz r3,$007C	; loop_3:
0080:	9a4f	anl  p2,#$4F
0082:	7428	call $0328
0084:	25	en   tcnti	; enable timer counter interrupt
0085:	55	strt t
0086:	b81e	mov  r0,#$1E
0088:	f0	mov  a,@r0
0089:	c686	jz   $0086
008b:	b944	mov  r1,#$44
008d:	a1	mov  @r1,a
008e:	230a	mov  a,#$A
0090:	60	add  a,@r0
0091:	b000	mov  @r0,#$0
0093:	b3	jmpp @a


label_2:
0094:	b0ff	mov  @r0,#$FF
0096:	0476	jmp  $0076
0098:	fe	mov  a,r6
0099:	c6bb	jz   $00BB
009b:	d303	xrl  a,#$3
009d:	96c9	jnz  $00C9
009f:	b827	mov  r0,#$27
00a1:	7438	call $0338
00a3:	b83a	mov  r0,#$3A
00a5:	f0	mov  a,@r0
00a6:	52b9	jb2  $00B9
00a8:	b820	mov  r0,#$20
00aa:	b073	mov  @r0,#$73
00ac:	b827	mov  r0,#$27
00ae:	ba02	mov  r2,#$2
00b0:	344e	call $014E
00b2:	b838	mov  r0,#$38		; "8"
00b4:	a0	mov  @r0,a
00b5:	be00	mov  r6,#$0
00b7:	0486	jmp  $0086
00b9:	2446	jmp  $0146
00bb:	d4b4	call $06B4
00bd:	0486	jmp  $0086
00bf:	d4ea	call $06EA
00c1:	0486	jmp  $0086
00c3:	3479	call $0179
00c5:	be00	mov  r6,#$0
00c7:	0486	jmp  $0086
00c9:	bc01	mov  r4,#$1
00cb:	c4fd	jmp  $06FD
00cd:	3479	call $0179
00cf:	04d9	jmp  $00D9
00d1:	fe	mov  a,r6
00d2:	c6cd	jz   $00CD
00d4:	97	clr  c
00d5:	03fb	add  a,#$FB
00d7:	f6c9	jc   $00C9
00d9:	fe	mov  a,r6
00da:	0327	add  a,#$27
00dc:	a8	mov  r0,a
00dd:	b944	mov  r1,#$44
00df:	f1	mov  a,@r1
00e0:	07	dec  a
00e1:	a0	mov  @r0,a
00e2:	aa	mov  r2,a
00e3:	34aa	call $01AA
00e5:	0486	jmp  $0086
00e7:	2446	jmp  $0146
00e9:	240c	jmp  $010C
00eb:	fe	mov  a,r6
00ec:	d303	xrl  a,#$3
00ee:	96e9	jnz  $00E9
00f0:	23f7	mov  a,#$F7
00f2:	7433	call $0333
00f4:	b827	mov  r0,#$27
00f6:	7438	call $0338
00f8:	b83a	mov  r0,#$3A
00fa:	f0	mov  a,@r0
00fb:	52e7	jb2  $00E7
00fd:	b827	mov  r0,#$27
00ff:	ba02	mov  r2,#$2
0101:	344e	call $014E
0103:	af	mov  r7,a
0104:	be00	mov  r6,#$0
0106:	b820	mov  r0,#$20
0108:	b079	mov  @r0,#$79
010a:	0486	jmp  $0086
010c:	fe	mov  a,r6
010d:	d305	xrl  a,#$5
010f:	9644	jnz  $0144
0111:	b83a	mov  r0,#$3A
0113:	f0	mov  a,@r0
0114:	724a	jb3  $014A
0116:	b827	mov  r0,#$27
0118:	ba01	mov  r2,#$1
011a:	344e	call $014E
011c:	97	clr  c
011d:	a9	mov  r1,a
011e:	03e7	add  a,#$E7
0120:	f64a	jc   $014A
0122:	b829	mov  r0,#$29
0124:	ba02	mov  r2,#$2
0126:	344e	call $014E
0128:	b64a	jf0  $014A
012a:	ac	mov  r4,a
012b:	f9	mov  a,r1
012c:	aa	mov  r2,a
012d:	ff	mov  a,r7
012e:	740a	call $030A
0130:	fa	mov  a,r2
0131:	91	movx @r1,a
0132:	19	inc  r1
0133:	fc	mov  a,r4
0134:	91	movx @r1,a
0135:	b83b	mov  r0,#$3B
0137:	ff	mov  a,r7
0138:	d0	xrl  a,@r0
0139:	c63e	jz   $013E
013b:	1f	inc  r7
013c:	2404	jmp  $0104
013e:	2308	mov  a,#$8
0140:	742e	call $032E
0142:	2404	jmp  $0104
0144:	04c9	jmp  $00C9
0146:	23fb	mov  a,#$FB
0148:	7433	call $0333
014a:	bc04	mov  r4,#$4
014c:	c4fd	jmp  $06FD
014e:	f9	mov  a,r1
014f:	ab	mov  r3,a
0150:	b93c	mov  r1,#$3C
0152:	bc03	mov  r4,#$3
0154:	f0	mov  a,@r0
0155:	a1	mov  @r1,a
0156:	18	inc  r0
0157:	19	inc  r1
0158:	ec54	djnz r4,$0154
015a:	fb	mov  a,r3
015b:	a9	mov  r1,a
015c:	b83c	mov  r0,#$3C
015e:	f0	mov  a,@r0
015f:	97	clr  c
0160:	85	clr  f0
0161:	f7	rlc  a
0162:	f676	jc   $0176
0164:	f7	rlc  a
0165:	f676	jc   $0176
0167:	60	add  a,@r0
0168:	f676	jc   $0176
016a:	f7	rlc  a
016b:	f676	jc   $0176
016d:	18	inc  r0
016e:	60	add  a,@r0
016f:	f676	jc   $0176
0171:	a0	mov  @r0,a
0172:	ea61	djnz r2,$0161
0174:	f0	mov  a,@r0
0175:	83	ret


0176:	95	cpl  f0
0177:	97	clr  c
0178:	83	ret


0179:	ba06	mov  r2,#$6	; r2 <- 0x06
017b:	b820	mov  r0,#$20	; r0 <- 0x20 (32 dec)
loop_1:
017d:	b000	mov  @r0,#$0	; @r0 <- 0x00
017f:	18	inc  r0		; r0++
0180:	ea7d	djnz r2,$017D	; decrement r2 jump if not zero to loop_1:
0182:	83	ret

; tastatur einlesen ?
0183:	f0	mov  a,@r0
0184:	54d9	call $02D9
0186:	b693	jf0  $0193
0188:	f4eb	call $07EB	; label_07eb:
018a:	fc	mov  a,r4
018b:	f4eb	call $07EB	; label_07eb:
018d:	fa	mov  a,r2
018e:	f4eb	call $07EB	; label_07eb:
0190:	be00	mov  r6,#$0
0192:	83	ret


0193:	85	clr  f0
0194:	248a	jmp  $018A
0196:	81	movx a,@r1
0197:	b839	mov  r0,#$39		; "9"
0199:	a0	mov  @r0,a
019a:	be00	mov  r6,#$0
019c:	85	clr  f0
019d:	95	cpl  f0
019e:	3483	call $0183
01a0:	19	inc  r1
01a1:	81	movx a,@r1
01a2:	b839	mov  r0,#$39		; "9"
01a4:	a0	mov  @r0,a
01a5:	be02	mov  r6,#$2
01a7:	3483	call $0183
01a9:	83	ret


01aa:	b821	mov  r0,#$21
01ac:	b922	mov  r1,#$22
01ae:	bb04	mov  r3,#$4
01b0:	f1	mov  a,@r1
01b1:	a0	mov  @r0,a
01b2:	18	inc  r0
01b3:	19	inc  r1
01b4:	ebb0	djnz r3,$01B0
01b6:	2300	mov  a,#$0
01b8:	6a	add  a,r2
01b9:	e3	movp3 a,@a
01ba:	b825	mov  r0,#$25
01bc:	a0	mov  @r0,a
01bd:	1e	inc  r6
01be:	83	ret


01bf:	85	clr  f0
01c0:	74f3	call $03F3
01c2:	24f1	jmp  $01F1
01c4:	3479	call $0179
01c6:	74f3	call $03F3
01c8:	b820	mov  r0,#$20
01ca:	b023	mov  @r0,#$23
01cc:	89c0	orl  p1,#$C0
01ce:	b83a	mov  r0,#$3A
01d0:	bc3c	mov  r4,#$3C

01d2:	bbfa	mov  r3,#$FA
01d4:	74b6	call $03B6	; label_03b6_wait_r3:(250)

01d6:	f0	mov  a,@r0
01d7:	12bf	jb0  $01BF
01d9:	ecd2	djnz r4,$01D2
01db:	27	clr  a
01dc:	740a	call $030A
01de:	74bd	call $03BD
01e0:	b6bf	jf0  $01BF
01e2:	b83b	mov  r0,#$3B
01e4:	f0	mov  a,@r0
01e5:	f2e9	jb7  $01E9
01e7:	24f1	jmp  $01F1
01e9:	23ff	mov  a,#$FF
01eb:	740a	call $030A
01ed:	74bd	call $03BD
01ef:	b6fd	jf0  $01FD
01f1:	997f	anl  p1,#$7F
01f3:	3479	call $0179
01f5:	b820	mov  r0,#$20
01f7:	b063	mov  @r0,#$63
01f9:	be00	mov  r6,#$0
01fb:	0486	jmp  $0086
01fd:	24bf	jmp  $01BF
01ff:	23f7	mov  a,#$F7
0201:	7433	call $0333
0203:	fe	mov  a,r6
0204:	c627	jz   $0227
0206:	d303	xrl  a,#$3
0208:	9640	jnz  $0240
020a:	b827	mov  r0,#$27
020c:	7438	call $0338
020e:	b83a	mov  r0,#$3A
0210:	f0	mov  a,@r0
0211:	523a	jb2  $023A
0213:	b827	mov  r0,#$27
0215:	ba02	mov  r2,#$2
0217:	344e	call $014E
0219:	af	mov  r7,a
021a:	3479	call $0179
021c:	ff	mov  a,r7
021d:	740a	call $030A
021f:	3496	call $0196
0221:	b820	mov  r0,#$20
0223:	b039	mov  @r0,#$39
0225:	0486	jmp  $0086
0227:	97	clr  c
0228:	ff	mov  a,r7
0229:	0301	add  a,#$1
022b:	af	mov  r7,a
022c:	f638	jc   $0238
022e:	b83b	mov  r0,#$3B
0230:	f0	mov  a,@r0
0231:	f21a	jb7  $021A
0233:	ff	mov  a,r7
0234:	f23c	jb7  $023C
0236:	441a	jmp  $021A
0238:	bfff	mov  r7,#$FF
023a:	2446	jmp  $0146
023c:	bf7f	mov  r7,#$7F
023e:	443a	jmp  $023A
0240:	fe	mov  a,r6
0241:	d301	xrl  a,#$1
0243:	c647	jz   $0247
0245:	04c9	jmp  $00C9
0247:	b827	mov  r0,#$27
0249:	f0	mov  a,@r0
024a:	d309	xrl  a,#$9
024c:	9645	jnz  $0245
024e:	3479	call $0179
0250:	b820	mov  r0,#$20
0252:	b039	mov  @r0,#$39		; "9"
0254:	b807	mov  r0,#$7
0256:	be02	mov  r6,#$2
0258:	3483	call $0183
025a:	0486	jmp  $0086
025c:	d5	sel  rb1
025d:	2f	xch  a,r7
025e:	23e0	mov  a,#$E0
0260:	62	mov  t,a
0261:	ea6b	djnz r2,$026B
0263:	b925	mov  r1,#$25
0265:	bdfe	mov  r5,#$FE
0267:	ba06	mov  r2,#$6
0269:	bc35	mov  r4,#$35
026b:	8aa0	orl  p2,#$A0
026d:	9aef	anl  p2,#$EF
026f:	27	clr  a
0270:	b801	mov  r0,#$1
0272:	90	movx @r0,a
0273:	fd	mov  a,r5
0274:	b803	mov  r0,#$3
0276:	90	movx @r0,a
0277:	f1	mov  a,@r1
0278:	b801	mov  r0,#$1
027a:	90	movx @r0,a
027b:	8a0f	orl  p2,#$F
027d:	0c	movd a,p4
027e:	97	clr  c
027f:	bb04	mov  r3,#$4
0281:	67	rrc  a
0282:	f688	jc   $0288
0284:	eb81	djnz r3,$0281
0286:	44bc	jmp  $02BC
0288:	fa	mov  a,r2
0289:	07	dec  a
028a:	e7	rl   a
028b:	e7	rl   a
028c:	17	inc  a
028d:	2b	xch  a,r3
028e:	37	cpl  a
028f:	17	inc  a
0290:	6b	add  a,r3
0291:	ae	mov  r6,a
0292:	f2bc	jb7  $02BC
0294:	fc	mov  a,r4
0295:	a8	mov  r0,a
0296:	fe	mov  a,r6
0297:	d0	xrl  a,@r0
0298:	c6b8	jz   $02B8
029a:	fe	mov  a,r6
029b:	a0	mov  @r0,a
029c:	fe	mov  a,r6
029d:	d30f	xrl  a,#$F
029f:	c6c2	jz   $02C2
02a1:	fe	mov  a,r6
02a2:	d30e	xrl  a,#$E
02a4:	c6c8	jz   $02C8
02a6:	fd	mov  a,r5
02a7:	e7	rl   a
02a8:	ad	mov  r5,a
02a9:	c9	dec  r1
02aa:	cc	dec  r4
02ab:	b83a	mov  r0,#$3A
02ad:	f0	mov  a,@r0
02ae:	92ce	jb4  $02CE
02b0:	d2d4	jb6  $02D4
02b2:	9a7f	anl  p2,#$7F
02b4:	2f	xch  a,r7
02b5:	c5	sel  rb0
02b6:	25	en   tcnti
02b7:	93	retr


02b8:	be00	mov  r6,#$0
02ba:	44a6	jmp  $02A6
02bc:	fc	mov  a,r4
02bd:	a8	mov  r0,a
02be:	b000	mov  @r0,#$0
02c0:	44a6	jmp  $02A6
02c2:	2301	mov  a,#$1
02c4:	742e	call $032E
02c6:	44a6	jmp  $02A6
02c8:	2302	mov  a,#$2
02ca:	742e	call $032E
02cc:	44a6	jmp  $02A6
02ce:	9adf	anl  p2,#$DF
02d0:	8a10	orl  p2,#$10
02d2:	44b0	jmp  $02B0
02d4:	8a80	orl  p2,#$80
02d6:	44b4	jmp  $02B4
02d8:	83	ret

; Wandlung bin -> dec ???
02d9:	97	clr  c
02da:	bc00	mov  r4,#$0
02dc:	03f6	add  a,#$F6
02de:	e6e4	jnc  $02E4
02e0:	97	clr  c
02e1:	1c	inc  r4
02e2:	44dc	jmp  $02DC
02e4:	030a	add  a,#$A
02e6:	aa	mov  r2,a
02e7:	97	clr  c
02e8:	fc	mov  a,r4
02e9:	bc00	mov  r4,#$0
02eb:	03f6	add  a,#$F6
02ed:	e6f3	jnc  $02F3
02ef:	97	clr  c
02f0:	1c	inc  r4
02f1:	44eb	jmp  $02EB
02f3:	030a	add  a,#$A
02f5:	2c	xch  a,r4
02f6:	97	clr  c
02f7:	83	ret

; -- DATA?
02f8:	00	nop
02f9:	88c4	orl  bus,#$C4
02fb:	00	nop
02fc:	00	nop
02fd:	00	nop
02fe:	00	nop
02ff:	1e	inc  r6
0300:	3f	movd p7,a
0301:	06	.db   0x06
0302:	5b	anl  a,r3
0303:	4f	orl  a,r7
0304:	66	.db   0x66
0305:	6d	add  a,r5
0306:	7d	addc a,r5
0307:	27	clr  a
0308:	7f	addc a,r7
0309:	6f	add  a,r7

label_030a:
030a:	f219	jb7  $0319
030c:	ab	mov  r3,a
030d:	23ef	mov  a,#$EF
030f:	7433	call $0333
0311:	8a20	orl  p2,#$20	; OR
0313:	9aef	anl  p2,#$EF	; AND
0315:	fb	mov  a,r3
0316:	e7	rl   a
0317:	a9	mov  r1,a
0318:	83	ret


0319:	0380	add  a,#$80
031b:	97	clr  c
031c:	ab	mov  r3,a
031d:	2310	mov  a,#$10
031f:	742e	call $032E
0321:	8a10	orl  p2,#$10
0323:	9adf	anl  p2,#$DF
0325:	fb	mov  a,r3
0326:	6416	jmp  $0316
0328:	27	clr  a			; A := 0
0329:	a9	mov  r1,a
032a:	91	movx @r1,a
032b:	e92a	djnz r1,$032A
032d:	83	ret

; OR A
032e:	b83a	mov  r0,#$3A		; "10" (dec)   0011'1010 bin
0330:	40	orl  a,@r0
0331:	a0	mov  @r0,a
0332:	83	ret

; AND A
0333:	b83a	mov  r0,#$3A		; 10 dec
0335:	50	anl  a,@r0
0336:	a0	mov  @r0,a
0337:	83	ret


0338:	ba02	mov  r2,#$2
033a:	344e	call $014E
033c:	b648	jf0  $0348
033e:	f241	jb7  $0341
0340:	83	ret


0341:	b83b	mov  r0,#$3B
0343:	f0	mov  a,@r0
0344:	f240	jb7  $0340
0346:	6449	jmp  $0349
0348:	85	clr  f0
0349:	2304	mov  a,#$4
034b:	742e	call $032E
034d:	6440	jmp  $0340
034f:	85	clr  f0
0350:	f253	jb7  $0353
0352:	83	ret


0353:	b83b	mov  r0,#$3B
0355:	f0	mov  a,@r0
0356:	f252	jb7  $0352
0358:	95	cpl  f0
0359:	6452	jmp  $0352
035b:	81	movx a,@r1
035c:	ab	mov  r3,a
035d:	744f	call $034F
035f:	b664	jf0  $0364
0361:	fb	mov  a,r3
0362:	740a	call $030A
0364:	83	ret


0365:	81	movx a,@r1
0366:	ab	mov  r3,a
0367:	744f	call $034F
0369:	b678	jf0  $0378
036b:	fb	mov  a,r3
036c:	740a	call $030A
036e:	81	movx a,@r1
036f:	9678	jnz  $0378
0371:	19	inc  r1
0372:	b836	mov  r0,#$36
0374:	f0	mov  a,@r0
0375:	9678	jnz  $0378
0377:	18	inc  r0
0378:	83	ret


0379:	ec82	djnz r4,$0382
037b:	127f	jb0  $037F
037d:	27	clr  a
037e:	83	ret


037f:	2301	mov  a,#$1
0381:	83	ret


0382:	77	rr   a
0383:	6479	jmp  $0379
0385:	2340	mov  a,#$40
0387:	742e	call $032E
0389:	23ef	mov  a,#$EF
038b:	7433	call $0333
038d:	8aa0	orl  p2,#$A0	; OR   at port 2    0xA0   1010'0000 bin
038f:	9aef	anl  p2,#$EF	; AND  at port 2    0xEF   1110'1111 bin
0391:	83	ret


0392:	2350	mov  a,#$50	; 0x50   80 dec
0394:	742e	call $032E
0396:	9adf	anl  p2,#$DF	; AND at port 2  0xDF 1101'1111 bin
0398:	8a90	orl  p2,#$90	; OR  at port 2  0x90 1001'0000 bin
039a:	83	ret


039b:	b836	mov  r0,#$36	; "6"
039d:	b000	mov  @r0,#$0
039f:	18	inc  r0
03a0:	a0	mov  @r0,a
03a1:	83	ret


03a2:	aa	mov  r2,a
03a3:	97	clr  c
03a4:	a7	cpl  c
03a5:	27	clr  a
03a6:	f7	rlc  a
03a7:	eaa6	djnz r2,$03A6
03a9:	aa	mov  r2,a
03aa:	f0	mov  a,@r0
03ab:	c6b1	jz   $03B1
03ad:	fa	mov  a,r2
03ae:	41	orl  a,@r1
03af:	a1	mov  @r1,a
03b0:	83	ret


03b1:	fa	mov  a,r2
03b2:	37	cpl  a
03b3:	51	anl  a,@r1
03b4:	64af	jmp  $03AF




label_03b6_wait_r3:
; This function waits a while
;
; input: r3                                                                             function WAIT(in_counter) {
;                                                                                         for (a=in_counter; a>=0; a--) {
03b6:	bac8	mov  r2,#$C8	; r2 := 200 dec                                             cnt=200
03b8:	eab8	djnz r2,$03B8	; decrement r2, jump to $03B8 if r2 is not zero             for (a=cnt; a>=0; a--) { ; }
03ba:	ebb6	djnz r3,$03B6	; decrement r2, jump to label_03b6: if r3 is not zero     }
03bc:	83	ret		;                                                       }



; label_???
03bd:	b900	mov  r1,#$0
03bf:	b83a	mov  r0,#$3A
03c1:	f0	mov  a,@r0
03c2:	12eb	jb0  $03EB
03c4:	97	clr  c
03c5:	b808	mov  r0,#$8
03c7:	81	movx a,@r1
03c8:	67	rrc  a
03c9:	e6dd	jnc  $03DD
03cb:	997f	anl  p1,#$7F

03cd:	bb1e	mov  r3,#$1E
03cf:	74b6	call $03B6	; label_03b6_wait_r3:(30)

03d1:	8980	orl  p1,#$80

03d3:	bb3c	mov  r3,#$3C
03d5:	74b6	call $03B6	; label_03b6_wait_r3:(195)

03d7:	e8c8	djnz r0,$03C8
03d9:	e9bf	djnz r1,$03BF
03db:	97	clr  c
03dc:	83	ret


03dd:	997f	anl  p1,#$7F

03df:	bb3c	mov  r3,#$3C
03e1:	74b6	call $03B6	; label_03b6_wait_r3:(195)

03e3:	8980	orl  p1,#$80

03e5:	bb1e	mov  r3,#$1E
03e7:	74b6	call $03B6	; label_03b6_wait_r3:(30)

03e9:	64d7	jmp  $03D7
03eb:	85	clr  f0
03ec:	95	cpl  f0
03ed:	23fe	mov  a,#$FE
03ef:	7433	call $0333
03f1:	64db	jmp  $03DB
03f3:	23fe	mov  a,#$FE
03f5:	7433	call $0333
03f7:	83	ret


; -- DATA???

03f8:	00	nop
03f9:	ef54	djnz r7,$0354
03fb:	28	xch  a,r0
03fc:	d236	jb6  $0336
03fe:	00	nop
03ff:	05	en   i
0400:	19	inc  r1
0401:	34eb	call $01EB
0403:	7b	addc a,r3
0404:	465f	jnt1 $045F
0406:	4f	orl  a,r7
0407:	f3	.db   0xf3
0408:	1b	inc  r3
0409:	8f	orld p7,a
040a:	1d	inc  r5
040b:	961f	jnz  $041F
040d:	21	xch  a,@r1
040e:	a6	.db   0xa6
040f:	c1	.db   0xc1
0410:	2325	mov  a,#$25
0412:	27	clr  a
0413:	6d	add  a,r5
0414:	749f	call $039F
0416:	29	xch  a,r1
0417:	2b	xch  a,r3
0418:	2d	xch  a,r5
0419:	c459	jmp  $0659	;
;
; Daten für das Selbstprüfungsprogramm welches mit 9 - RUN aufgerufen werden kann.
; Daten für Sieben Segment Anzeige, Codierung wie hier angegeben mit 7 Bits: https://de.wikipedia.org/wiki/Segmentanzeige
;
; 7-Segment Anzeige: "8  8 8.  8 8 8"
;
041b:	a40b	.db a4 0b	; 0x0b: 1010'0100  0 000'1011 -> ""
041d:	a42b	.db a4 2b	; 0x2b: 1010'0100  0 010'1011 -> ""
041f:	a452	.db a4 52	; 0x52: 1010'0100  0 101'0010 -> ""
0421:	a43e	.db a4 3e 	; 0x3d: 1010'0100  0 011'1110 -> ""
0423:	a46a	.db a4 6A	; 0x6a: 1010'0100  0 110'1010 -> ""
0425:	a48d	.db a4 8D	; 0x8d: 1010'0100  1 000'1101 -> ""
0427:	a4a4	.db a4 A4	; 0xa4: 1010'0100  1 010'0100 -> ""
0429:	a4c9	.db a4 C9	; 0xc9: 1010'0100  1 100'1001 -> ""
042b:	a4ef	.db a4 EF	; 0xef: 1010'0100  1 110'1111 -> ""
042d:	a4f9	.db a4 F9	; 0xf9: 1010'0100  1 111'1001 -> "3"
;
042f:	81	movx a,@r1
0430:	0300	add  a,#$0
0432:	19	inc  r1
0433:	b3	jmpp @a
0434:	2301	mov  a,#$1
0436:	7433	call $0333
0438:	b838	mov  r0,#$38		; "8"
043a:	f0	mov  a,@r0
043b:	b83b	mov  r0,#$3B
043d:	d0	xrl  a,@r0
043e:	c644	jz   $0444
0440:	85	clr  f0
0441:	95	cpl  f0
0442:	c42f	jmp  $062F
0444:	c473	jmp  $0673
0446:	b836	mov  r0,#$36
0448:	b000	mov  @r0,#$0
044a:	18	inc  r0
044b:	81	movx a,@r1
044c:	a0	mov  @r0,a
044d:	c42f	jmp  $062F
044f:	745b	call $035B
0451:	b65d	jf0  $045D
0453:	b836	mov  r0,#$36
0455:	f0	mov  a,@r0
0456:	91	movx @r1,a
0457:	18	inc  r0
0458:	19	inc  r1
0459:	f0	mov  a,@r0
045a:	91	movx @r1,a
045b:	c42f	jmp  $062F
045d:	c45d	jmp  $065D
045f:	745b	call $035B
0461:	b65d	jf0  $045D
0463:	b836	mov  r0,#$36
0465:	81	movx a,@r1
0466:	a0	mov  @r0,a
0467:	18	inc  r0
0468:	19	inc  r1
0469:	81	movx a,@r1
046a:	a0	mov  @r0,a
046b:	c42f	jmp  $062F
046d:	745b	call $035B
046f:	b65d	jf0  $045D
0471:	19	inc  r1
0472:	845f	jmp  $045F
0474:	745b	call $035B
0476:	b65d	jf0  $045D
0478:	19	inc  r1
0479:	844f	jmp  $044F
047b:	81	movx a,@r1
047c:	c68d	jz   $048D
047e:	aa	mov  r2,a
047f:	bb01	mov  r3,#$1
0481:	bc01	mov  r4,#$1
0483:	bdc8	mov  r5,#$C8
0485:	ed85	djnz r5,$0485
0487:	ec83	djnz r4,$0483
0489:	eb81	djnz r3,$0481
048b:	ea7f	djnz r2,$047F
048d:	c42f	jmp  $062F
048f:	81	movx a,@r1
0490:	b838	mov  r0,#$38		; "8"
0492:	ab	mov  r3,a
0493:	a0	mov  @r0,a
0494:	c439	jmp  $0639
0496:	b83a	mov  r0,#$3A
0498:	f0	mov  a,@r0
0499:	b29d	jb5  $049D
049b:	c42f	jmp  $062F
049d:	848f	jmp  $048F
049f:	745b	call $035B
04a1:	b65d	jf0  $045D
04a3:	19	inc  r1
04a4:	848f	jmp  $048F
04a6:	b836	mov  r0,#$36
04a8:	f0	mov  a,@r0
04a9:	96bd	jnz  $04BD
04ab:	97	clr  c
04ac:	18	inc  r0
04ad:	f0	mov  a,@r0
04ae:	03fe	add  a,#$FE
04b0:	f6bd	jc   $04BD
04b2:	f0	mov  a,@r0
04b3:	c6b9	jz   $04B9
04b5:	b000	mov  @r0,#$0
04b7:	c42f	jmp  $062F
04b9:	b001	mov  @r0,#$1
04bb:	c42f	jmp  $062F
04bd:	bc05	mov  r4,#$5
04bf:	c4fd	jmp  $06FD
04c1:	b836	mov  r0,#$36
04c3:	f0	mov  a,@r0
04c4:	96bd	jnz  $04BD
04c6:	97	clr  c
04c7:	18	inc  r0
04c8:	f0	mov  a,@r0
04c9:	03fe	add  a,#$FE
04cb:	f6bd	jc   $04BD
04cd:	745b	call $035B
04cf:	b65d	jf0  $045D
04d1:	81	movx a,@r1
04d2:	96bd	jnz  $04BD
04d4:	97	clr  c
04d5:	19	inc  r1
04d6:	81	movx a,@r1
04d7:	03fe	add  a,#$FE
04d9:	f6bd	jc   $04BD
04db:	b837	mov  r0,#$37
04dd:	f0	mov  a,@r0
04de:	c6bb	jz   $04BB
04e0:	81	movx a,@r1
04e1:	c6e7	jz   $04E7
04e3:	b001	mov  @r0,#$1
04e5:	c42f	jmp  $062F
04e7:	b000	mov  @r0,#$0
04e9:	c42f	jmp  $062F
04eb:	d4ea	call $06EA
04ed:	c42f	jmp  $062F
04ef:	a40f	jmp  $050F
04f1:	a405	jmp  $0505
04f3:	7465	call $0365
04f5:	b65d	jf0  $045D
04f7:	96bd	jnz  $04BD
04f9:	76ef	jf1  $04EF
04fb:	97	clr  c
04fc:	81	movx a,@r1
04fd:	60	add  a,@r0
04fe:	f6f1	jc   $04F1
0500:	a0	mov  @r0,a
0501:	c42f	jmp  $062F
0503:	c45d	jmp  $065D
0505:	bc06	mov  r4,#$6
0507:	c4fd	jmp  $06FD
0509:	84bd	jmp  $04BD
050b:	a5	clr  f1
050c:	b5	cpl  f1
050d:	84f3	jmp  $04F3
050f:	a5	clr  f1
0510:	81	movx a,@r1
0511:	ab	mov  r3,a
0512:	d0	xrl  a,@r0
0513:	c627	jz   $0527
0515:	fb	mov  a,r3
0516:	c625	jz   $0525
0518:	37	cpl  a
0519:	97	clr  c
051a:	0301	add  a,#$1
051c:	60	add  a,@r0
051d:	e605	jnc  $0505
051f:	97	clr  c
0520:	f0	mov  a,@r0
0521:	07	dec  a
0522:	eb21	djnz r3,$0521
0524:	a0	mov  @r0,a
0525:	c42f	jmp  $062F
0527:	b000	mov  @r0,#$0
0529:	c42f	jmp  $062F
052b:	f4e1	call $07E1
052d:	7465	call $0365
052f:	b603	jf0  $0503
0531:	9609	jnz  $0509
0533:	81	movx a,@r1
0534:	d0	xrl  a,@r0
0535:	c63a	jz   $053A
0537:	97	clr  c
0538:	c42f	jmp  $062F
053a:	f4e6	call $07E6
053c:	a437	jmp  $0537
053e:	f4e1	call $07E1
0540:	7465	call $0365
0542:	b603	jf0  $0503
0544:	9609	jnz  $0509
0546:	81	movx a,@r1
0547:	c637	jz   $0537
0549:	37	cpl  a
054a:	97	clr  c
054b:	0301	add  a,#$1
054d:	60	add  a,@r0
054e:	e63a	jnc  $053A
0550:	a437	jmp  $0537
0552:	f4e1	call $07E1
0554:	7465	call $0365
0556:	b603	jf0  $0503
0558:	9609	jnz  $0509
055a:	f0	mov  a,@r0
055b:	c637	jz   $0537
055d:	37	cpl  a
055e:	97	clr  c
055f:	0301	add  a,#$1
0561:	ab	mov  r3,a
0562:	81	movx a,@r1
0563:	6b	add  a,r3
0564:	e63a	jnc  $053A
0566:	a437	jmp  $0537
0568:	a474	jmp  $0574
056a:	81	movx a,@r1
056b:	9668	jnz  $0568
056d:	89ff	orl  p1,#$FF
056f:	09	in   a,p1
0570:	749b	call $039B
0572:	c42f	jmp  $062F
0574:	ac	mov  r4,a
0575:	97	clr  c
0576:	03f7	add  a,#$F7
0578:	f609	jc   $0509
057a:	fc	mov  a,r4
057b:	aa	mov  r2,a
057c:	97	clr  c
057d:	a7	cpl  c
057e:	27	clr  a
057f:	f7	rlc  a
0580:	ea7f	djnz r2,$057F
0582:	b93f	mov  r1,#$3F
0584:	41	orl  a,@r1
0585:	39	outl p1,a
0586:	09	in   a,p1
0587:	7479	call $0379
0589:	749b	call $039B
058b:	c42f	jmp  $062F
058d:	b837	mov  r0,#$37
058f:	81	movx a,@r1
0590:	aa	mov  r2,a
0591:	b93f	mov  r1,#$3F
0593:	969a	jnz  $059A
0595:	f0	mov  a,@r0
0596:	a1	mov  @r1,a
0597:	39	outl p1,a
0598:	c42f	jmp  $062F
059a:	97	clr  c
059b:	03f7	add  a,#$F7
059d:	f609	jc   $0509
059f:	fa	mov  a,r2
05a0:	74a2	call $03A2
05a2:	a497	jmp  $0597
05a4:	81	movx a,@r1
05a5:	aa	mov  r2,a
05a6:	7485	call $0385
05a8:	b940	mov  r1,#$40
05aa:	bc02	mov  r4,#$2
05ac:	b837	mov  r0,#$37
05ae:	fa	mov  a,r2
05af:	96bf	jnz  $05BF
05b1:	f0	mov  a,@r0
05b2:	a1	mov  @r1,a
05b3:	2c	xch  a,r4
05b4:	a8	mov  r0,a
05b5:	2c	xch  a,r4
05b6:	90	movx @r0,a
05b7:	23bf	mov  a,#$BF
05b9:	7433	call $0333
05bb:	9a7f	anl  p2,#$7F
05bd:	c42f	jmp  $062F
05bf:	97	clr  c
05c0:	03f7	add  a,#$F7
05c2:	f6e7	jc   $05E7
05c4:	fa	mov  a,r2
05c5:	74a2	call $03A2
05c7:	a4b3	jmp  $05B3
05c9:	81	movx a,@r1
05ca:	ac	mov  r4,a
05cb:	7492	call $0392
05cd:	b802	mov  r0,#$2
05cf:	fc	mov  a,r4
05d0:	96dd	jnz  $05DD
05d2:	80	movx a,@r0
05d3:	749b	call $039B
05d5:	23bf	mov  a,#$BF
05d7:	7433	call $0333
05d9:	9a7f	anl  p2,#$7F
05db:	c42f	jmp  $062F
05dd:	97	clr  c
05de:	03f7	add  a,#$F7
05e0:	f6e7	jc   $05E7
05e2:	80	movx a,@r0
05e3:	7479	call $0379
05e5:	a4d3	jmp  $05D3
05e7:	23bf	mov  a,#$BF
05e9:	7433	call $0333
05eb:	9a7f	anl  p2,#$7F
05ed:	84bd	jmp  $04BD
05ef:	81	movx a,@r1
05f0:	aa	mov  r2,a
05f1:	7492	call $0392
05f3:	b941	mov  r1,#$41
05f5:	bc01	mov  r4,#$1
05f7:	a4ac	jmp  $05AC
05f9:	81	movx a,@r1
05fa:	aa	mov  r2,a
05fb:	7492	call $0392
05fd:	b942	mov  r1,#$42
05ff:	bc03	mov  r4,#$3
0601:	a4ac	jmp  $05AC
0603:	fe	mov  a,r6
0604:	d301	xrl  a,#$1
0606:	9614	jnz  $0614
0608:	b827	mov  r0,#$27
060a:	f0	mov  a,@r0
060b:	d309	xrl  a,#$9
060d:	c678	jz   $0678
060f:	f0	mov  a,@r0
0610:	d308	xrl  a,#$8
0612:	c67a	jz   $067A
0614:	3479	call $0179
0616:	be00	mov  r6,#$0
0618:	b83a	mov  r0,#$3A
061a:	f0	mov  a,@r0
061b:	124f	jb0  $064F
061d:	b83a	mov  r0,#$3A
061f:	f0	mov  a,@r0
0620:	3253	jb1  $0653
0622:	b838	mov  r0,#$38		; "8"
0624:	f0	mov  a,@r0
0625:	740a	call $030A
0627:	97	clr  c
0628:	81	movx a,@r1
0629:	03e7	add  a,#$E7
062b:	f659	jc   $0659
062d:	842f	jmp  $042F
062f:	97	clr  c
0630:	b838	mov  r0,#$38		; "8"
0632:	f0	mov  a,@r0
0633:	0301	add  a,#$1
0635:	a0	mov  @r0,a
0636:	ab	mov  r3,a
0637:	f65d	jc   $065D
0639:	b83b	mov  r0,#$3B
063b:	f0	mov  a,@r0
063c:	f241	jb7  $0641
063e:	fb	mov  a,r3
063f:	f25d	jb7  $065D
0641:	b673	jf0  $0673
0643:	b83a	mov  r0,#$3A
0645:	f0	mov  a,@r0
0646:	326f	jb1  $066F
0648:	b83a	mov  r0,#$3A
064a:	f0	mov  a,@r0
064b:	1261	jb0  $0661
064d:	c422	jmp  $0622
064f:	74f3	call $03F3
0651:	c41d	jmp  $061D
0653:	23fd	mov  a,#$FD
0655:	7433	call $0333
0657:	c422	jmp  $0622
0659:	bc02	mov  r4,#$2
065b:	c4fd	jmp  $06FD
065d:	bc03	mov  r4,#$3
065f:	c4fd	jmp  $06FD
0661:	23ef	mov  a,#$EF
0663:	7433	call $0333
0665:	8a20	orl  p2,#$20
0667:	9aef	anl  p2,#$EF
0669:	b900	mov  r1,#$0
066b:	3496	call $0196
066d:	4421	jmp  $0221
066f:	0498	jmp  $0098
0671:	0486	jmp  $0086
0673:	85	clr  f0
0674:	be00	mov  r6,#$0
0676:	0498	jmp  $0098
0678:	c4c1	jmp  $06C1
067a:	c47c	jmp  $067C
067c:	3479	call $0179
067e:	74f3	call $03F3
0680:	b843	mov  r0,#$43
0682:	10	inc  @r0
0683:	f0	mov  a,@r0
0684:	bc04	mov  r4,#$4

0686:	bbfa	mov  r3,#$FA
0688:	74b6	call $03B6	; label_03b6_wait_r3:(250)

068a:	ec86	djnz r4,$0686
068c:	07	dec  a
068d:	9684	jnz  $0684
068f:	97	clr  c
0690:	b805	mov  r0,#$5
0692:	ad	mov  r5,a
0693:	be02	mov  r6,#$2
0695:	3483	call $0183
0697:	b93a	mov  r1,#$3A
0699:	f1	mov  a,@r1
069a:	12a7	jb0  $06A7
069c:	fd	mov  a,r5
069d:	0301	add  a,#$1
069f:	f6a9	jc   $06A9

06a1:	bb01	mov  r3,#$1
06a3:	74b6	call $03B6	; label_03b6_wait_r3:(1)

06a5:	c490	jmp  $0690
06a7:	74f3	call $03F3
06a9:	be00	mov  r6,#$0
06ab:	b843	mov  r0,#$43
06ad:	fd	mov  a,r5
06ae:	5307	anl  a,#$7
06b0:	a0	mov  @r0,a
06b1:	97	clr  c
06b2:	0486	jmp  $0086

06b4:	3479	call $0179
06b6:	b820	mov  r0,#$20
06b8:	b073	mov  @r0,#$73
06ba:	b838	mov  r0,#$38		; "8"
06bc:	be02	mov  r6,#$2
06be:	3483	call $0183
06c0:	83	ret


06c1:	3479	call $0179

06c3:	bbff	mov  r3,#$FF
06c5:	74b6	call $03B6	; label_03b6_wait_r3:(255)

06c7:	bbff	mov  r3,#$FF
06c9:	74b6	call $03B6	; label_03b6_wait_r3:(255)

06cb:	b909	mov  r1,#$9
06cd:	bc0a	mov  r4,#$A
06cf:	2300	mov  a,#$0
06d1:	69	add  a,r1
06d2:	e3	movp3 a,@a
06d3:	bb06	mov  r3,#$6
06d5:	b825	mov  r0,#$25
06d7:	a0	mov  @r0,a
06d8:	c8	dec  r0
06d9:	ebd7	djnz r3,$06D7

06db:	bbff	mov  r3,#$FF
06dd:	74b6	call $03B6	; label_03b6_wait_r3:(255)

06df:	bbff	mov  r3,#$FF	; label_03b6_wait_r3:(255)
06e1:	74b6	call $03B6

06e3:	c9	dec  r1
06e4:	eccf	djnz r4,$06CF
06e6:	be00	mov  r6,#$0
06e8:	0486	jmp  $0086
06ea:	be00	mov  r6,#$0
06ec:	85	clr  f0
06ed:	95	cpl  f0
06ee:	b836	mov  r0,#$36		; "6"
06f0:	3483	call $0183
06f2:	b837	mov  r0,#$37		; "7"
06f4:	be02	mov  r6,#$2
06f6:	3483	call $0183
06f8:	b820	mov  r0,#$20
06fa:	b077	mov  @r0,#$77
06fc:	83	ret


06fd:	3479	call $0179
06ff:	97	clr  c
0700:	85	clr  f0
0701:	a5	clr  f1
0702:	b820	mov  r0,#$20
0704:	b071	mov  @r0,#$71
0706:	b804	mov  r0,#$4
0708:	be02	mov  r6,#$2
070a:	3483	call $0183
070c:	0486	jmp  $0086
070e:	3479	call $0179
0710:	74f3	call $03F3
0712:	b820	mov  r0,#$20
0714:	b01c	mov  @r0,#$1C
0716:	27	clr  a
0717:	740a	call $030A
0719:	99bf	anl  p1,#$BF
071b:	8980	orl  p1,#$80
071d:	b83a	mov  r0,#$3A
071f:	f0	mov  a,@r0
0720:	1278	jb0  $0778
0722:	09	in   a,p1
0723:	f21d	jb7  $071D
0725:	27	clr  a
0726:	a9	mov  r1,a
0727:	ad	mov  r5,a
0728:	b808	mov  r0,#$8
072a:	f47c	call $077C
072c:	7671	jf1  $0771
072e:	f4d0	call $07D0
0730:	f8	mov  a,r0
0731:	d308	xrl  a,#$8
0733:	962a	jnz  $072A
0735:	b83a	mov  r0,#$3A
0737:	f0	mov  a,@r0
0738:	1278	jb0  $0778
073a:	b808	mov  r0,#$8
073c:	f9	mov  a,r1
073d:	962a	jnz  $072A
073f:	b83b	mov  r0,#$3B
0741:	f0	mov  a,@r0
0742:	f246	jb7  $0746
0744:	e464	jmp  $0764
0746:	2380	mov  a,#$80
0748:	740a	call $030A
074a:	27	clr  a
074b:	a9	mov  r1,a
074c:	ad	mov  r5,a
074d:	b808	mov  r0,#$8
074f:	f47c	call $077C
0751:	7674	jf1  $0774
0753:	f4d0	call $07D0
0755:	f8	mov  a,r0
0756:	d308	xrl  a,#$8
0758:	964f	jnz  $074F
075a:	b83a	mov  r0,#$3A
075c:	f0	mov  a,@r0
075d:	1278	jb0  $0778
075f:	b808	mov  r0,#$8
0761:	f9	mov  a,r1
0762:	964f	jnz  $074F
0764:	3479	call $0179
0766:	b820	mov  r0,#$20
0768:	b05c	mov  @r0,#$5C
076a:	97	clr  c
076b:	85	clr  f0
076c:	a5	clr  f1
076d:	be00	mov  r6,#$0
076f:	0486	jmp  $0086
0771:	f9	mov  a,r1
0772:	c61d	jz   $071D
0774:	bc07	mov  r4,#$7
0776:	c4fd	jmp  $06FD
0778:	74f3	call $03F3
077a:	e464	jmp  $0764
077c:	27	clr  a
077d:	aa	mov  r2,a
077e:	ab	mov  r3,a
077f:	97	clr  c
0780:	85	clr  f0
0781:	a5	clr  f1
0782:	8980	orl  p1,#$80
0784:	09	in   a,p1
0785:	f293	jb7  $0793
0787:	fa	mov  a,r2
0788:	0301	add  a,#$1
078a:	f6c5	jc   $07C5
078c:	aa	mov  r2,a

; -- wait for 100 ms
078d:	bc64	mov  r4,#$64		; 100
078f:	f4c7	call $07C7		; -- call COMMAND_VZG_03:
0791:	e484	jmp  $0784

; -- wait for 200 ms
0793:	bcc8	mov  r4,#$C8		; 200
0795:	f4c7	call $07C7		; -- call COMMAND_VZG_03:
0797:	09	in   a,p1
0798:	f29c	jb7  $079C
079a:	e487	jmp  $0787

; -- wait for 100 ms
079c:	bc64	mov  r4,#$64		; 100
079e:	f4c7	call $07C7		; -- call COMMAND_VZG_03:
07a0:	09	in   a,p1
07a1:	f2bd	jb7  $07BD

; -- wait for 200 ms
07a3:	bcc8	mov  r4,#$C8		; 200
07a5:	f4c7	call $07C7		; -- call COMMAND_VZG_03:
07a7:	09	in   a,p1
07a8:	f2bd	jb7  $07BD
07aa:	fa	mov  a,r2
07ab:	03fd	add  a,#$FD
07ad:	e6c5	jnc  $07C5
07af:	97	clr  c
07b0:	fb	mov  a,r3
07b1:	03fd	add  a,#$FD
07b3:	e6c5	jnc  $07C5
07b5:	97	clr  c
07b6:	fa	mov  a,r2
07b7:	37	cpl  a
07b8:	6b	add  a,r3
07b9:	e6bc	jnc  $07BC
07bb:	95	cpl  f0
07bc:	83	ret


;
; -- ANZ 02.000 Akku-Inhalt anzeigen.  ???
;

07bd:	fb	mov  a,r3
07be:	0301	add  a,#$1
07c0:	f6c5	jc   $07C5
07c2:	ab	mov  r3,a
07c3:	e49c	jmp  $079C
07c5:	b5	cpl  f1
07c6:	83	ret

;
; -- VZG 03.nnn Verzögern um nnn Millisekunden.
; 
; Input: r4 - number of milliseconds to wait
;
; With CPU with 6 MHz, this is 6 000 000 instructions per one second
;
; In 0.001 sec  -> 6 000 000 NOP's
; In 1 sec      -> 6 000 NOP's     / div 6000
; In 1/6000 sec -> 1 NOP
; So 1 NOP takes 1/6000 sec to execute
; So 6 NOP's are 6 * 1/6000 sec = 6/6000 = 0.001 sec = 1 millisec
;
; So 1 millisec is 6 NOP's
;

COMMAND_VZG_03:

07c7:	00	nop		; 1. no operation
07c8:	00	nop		; 2. no operation
07c9:	00	nop		; 3. no operation
07ca:	00	nop		; 4. no operation
07cb:	00	nop		; 5. no operation
07cc:	00	nop		; 6. no operation. After the 6th NOP the CPU passed 1 milli second
07cd:	ecc7	djnz r4,$07C7	; decrement jump if r4 is not zero to COMMAND_VZG_03:
07cf:	83	ret		; return


07d0:	97	clr  c
07d1:	b6de	jf0  $07DE
07d3:	fd	mov  a,r5
07d4:	67	rrc  a		; rotate right through carry
07d5:	ad	mov  r5,a
07d6:	e8dd	djnz r0,$07DD
07d8:	fd	mov  a,r5
07d9:	91	movx @r1,a
07da:	c9	dec  r1
07db:	b808	mov  r0,#$8
07dd:	83	ret


07de:	a7	cpl  c
07df:	e4d3	jmp  $07D3
07e1:	23df	mov  a,#$DF
07e3:	7433	call $0333
07e5:	83	ret


07e6:	2320	mov  a,#$20	; 0x20: 0100'0000 bin
07e8:	742e	call $032E
07ea:	83	ret

; Umwandlung binär nach dezimal?
; input: a (Akku)
label_07eb:
07eb:	ab	mov  r3,a
07ec:	2300	mov  a,#$0
07ee:	6b	add  a,r3
07ef:	e3	movp3 a,@a
07f0:	ab	mov  r3,a
07f1:	fe	mov  a,r6
07f2:	0320	add  a,#$20	; 32 dec
07f4:	17	inc  a
07f5:	a8	mov  r0,a
07f6:	fb	mov  a,r3
07f7:	a0	mov  @r0,a
07f8:	1e	inc  r6
07f9:	83	ret


07fa:	6d	add  a,r5
07fb:	d6	.db   0xd6
07fc:	78	addc a,r0
07fd:	eb00	djnz r3,$0700
07ff:	02	outl bus,a

; eof

 

Share it on: Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInPin on PinterestShare on TumblrDigg thisBuffer this pageFlattr the authorShare on RedditShare on StumbleUponShare on VKShare on YummlyEmail this to someonePrint this page

One thought on “Kosmos CP-1 Computer-Praxis

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Translate »