Download

Programmcode
2000:		3E 00 		P1:	LD A, 00 	; Lade A mit 0
2002:		32 50 23        	LD (2350), A	; Lade (2350) mit A(0)
2005:		32 51 23        	LD (2351), A	; Lade (2350) mit A(0)
2008:		32 00 23        	LD (2300), A	; Lade (2301) mit A(0)
200B:		32 01 23        	LD (2301), A	; Lade (2301) mit A(0)
200E:		32 02 23       		LD (2302), A	; Lade (2302) mit A(0)
2011:		32 03 23        	LD (2303), A	; Lade (2303) mit A(0)
2014:		32 04 23        	LD (2304), A	; Lade (2304) mit A(0)
2017:		32 05 23        	LD (2305), A	; Lade (2305) mit A(0)
201A:		16 00 			LD D, 0		; Lade D mit 0
201C:		DD 21 00 23	 	LD IX 0023 	; Lade IX mit 2300H
2020:		CD 5A 08		CAll (085A) 	; Aufruf DAK1(085A)
2023:		FE 10			CP A, 10 	; A mit 10 vergleichen
2025:		DA 30 20		JP C 		; Springe Carry zu Nummern eingabe
2028:		C3 60 20		JP ub. 		; Springe zu Operatoren eingabe
202B:		CA 60 20		HALT
202E:		76

Nummerneingabe:
2030: 		21 50 23		LD HL, (2350)	; Lade HL (2350)
2033:		4F			LD C, A		; Lade C mit A
2034:		7A			LD A, D		; Lade A mit D
2035:		FE 01			CP D 01		; Vergleiche A mit 01
2037:		CA 3D 20		JPZ (203D)	; Springe Wenn A = 01 einsweiter
203A:		C3 3E 20		JP (203E)	; Springe anderen falls 1 weiter
203D:		23			INC HL		; erhöhe hl um 1
203E:		7E			LD A, HL	; Lade A mit HL
203F:		FE 00			CP 00		; Vergleiche A mit 00
2041:		CA 4C 20		JPZ 00 00	; Springe A = 00 nach weiter machen
2044:		47			LD B, A		; Lade B, A
2045:		3E 00			LD A, 00	; Lade A, 00
2047:	M1:	C6 10			ADD 10		; Addiere A 10
2049:		77			LD HL, A	; in HL schreiben
204A:		10 FB			DJNZ M1		; DJNZ
204C:		7E			LD A, HL	; Lade A, HL
204D:		81			ADD A, B	; Addiere C zu a // Fehler3
204E:		77			LD HL, A	; Schreibe A in HL
204F: 		21 00 23		LD HL, 2300	; Lade HL 2300
2052:		CD D9 O8		CAll (08D9)	; Aufruf TWOSEG
2055:		C3 1C 20		JP (201C)		; Sprung (201C)


Operatoren Eingabe

2060: 		FE 10			CP A, 10	; CP A mit 10 und setze E auf 1
2062:		CA 68 20		JP Z, (2068)
2065:		C3 6C 20		JP (206C)
2068:		1E 01			LD E, 01
206A:		16 01			LD D, 01
206C:		FE 11			CP A, 11		; CP A mit 11 und setze E auf 2
206E:		CA 74 20		JP Z, (2074)
2071:		C3 78 20		JP (2078)
2074:		1E 02			LD E, 02
2076:		16 01			LD D, 01
2078:		FE 19			CP A, 19		; CP A mit 19 und setze E auf 3
207A: 		CA 80 20		JP Z,(2080)
207D:		C3 84 20		JP (2084)
2080:		1E 03			LD E, 03
2082:		16 01			LD D, 01
2084:		FE 14			CP A, 14		; CP A mit 14 und setze E auf 4
2086:		CA 8C 20		JP Z, (208C)
2089:		C3 90 20		JP (2090)
208C:		1E 04			LD E, 04
208E:		16 01			LD D, 01
2090:		FE 12			CP A, 12		; CP A mit 12 und springe Execute (Ausrechenen)
2092:		CA A0 20		JP Z, (20A0)
2095:		FE 1F 			CP A, 1F		; CP A mit 1F und springe 2000 (Reset)
2097:		CA 00 20		JP Z, (2200)
209A: 		C3 1C 20		JP M2

Execute

20A0: 		7B			LD A, E		; Lade A mit E
20A1:		FE 01			CP 01		; CP A mit 1 -> JP Add
20A3: 		CA C0 20		JPZ (20C0)
20A6:		FE 02			CP 02		; CP A mit 2 -> JP Sub
20A8:		CA 05 21		JPZ (2105)
20AB: 		FE 03			CP 03		; CP A mit 3 -> JP Mult
20AD:  		CA 30 21		JPZ (2130)
20B0: 		FE 04			CP 04		; CP A mit 2 -> JP DIV
20B2:		CA 80 21 		JPZ (2180)
20B5: 		C3 1C 20		JP (201C)

Add

20C0:		3A 51 23		LD A, (2351)	; Lade A mit (2351)
20C3:		32 52 23		LD (2352), A	; Lade (2352) mit A
20C6:		3E 00			LD A, 00	; Lade A mit 00
20C8:		32 51 23		LD (2351), A	; Lade (2351) mit A
20cB:		32 53 23		LD (2353), A	; Lade (2353) mit A
20CE:		2A 50 23		LD HL, (2350)	; Lade HL mit (2350)
20D1:		ED 4B 52 23		LD BC, (2352)	; Lade BC mit (2352)
20D5:		09			ADD HL, BC	; ADD HL, BC
20D6:		22 50 23		LD (2350), HL	; Lade (2350) mit HL
20D9:		21 00 23		LD HL, 2300	; Lade HL mit 2300
20DC:		3A 50 23		LD A, (2350)	; Lade A mit (3250)
20DF:		CD D9 O8		CAll (08D9)	; Rufe TWOSEG
20E2:		3A 51 23		LD A, (2351)	; Lade A mit (3251)
20E5:		21 02 23		LD HL, 2302	; Lade HL mit 2302
20E8:		CD D9 O8		CAll (08D9)	; Rufe TWOSEG
20EB:		3E 00			LD A, 00	; LADE A, 00
20ED:		57			LD D, A		; Lade D, A
20EE:		5F			LD E, A		; Lade E, A
20EF:		DD 21 00 23		LD IX, 2300	; Lade IX 2300
20F3:		CD 5A 08		CAll (085A)	; Rufe DAK 1
20F6:		CD 50 22		Call (2250)	; Rufe (2250)
20F9:		C3 23 20		JP (2023)		; Springe

SUB
2105:		21 00 23		LD HL, 2300	; Lade HL 2300
2108:		3A 51 23		LD A, (2351)	; Lade A mit (2351)
210B:		47			LD B, A		; Lade B, A
210C:		3A 50 23		LD A, (2350)	; Lade A mit (2350)
210F:		90			SUB A, B	; SUB A, B
2110: 		CD D9 O8		CAll (08D9)	; TWOSEG
2113:		3E 00			LD A, 00	; LADE A, 00
2115:		57			LD D, A		; Lade D, A
2116:		5F			LD E, A		; Lade E, A
2117:		DD 21 00 23		LD IX, 2300	; Lade IX 2300
211B:		CD 5A 08		CAll (085A)	; Rufe DAK 1
211E:		CD 50 22		CALL (2250)	; Rufe (2250)
2121:		C3 23 20		JP (2023)		; Springe

Mult:
2130:		3E 00			LD A, 00	; Lade A mit 00
2132:		32 52 23		LD (2352), A	; Lade (2351) mit A
2135:		3A 50 23		LD A, (2350)	; Lade A mit 2350
2138:		FE 00			CP A, 00        ; Vergleiche A mit 00
213A:		CA 00 22		JP Z Null	; Springe Null
213D:		21 00 00		LD HL, 0000	; Lade HL, 0000
2140:		ED 5B 51 23		LD DE, (2351)	; Lade DE mit (2351)
2144:		47			LD B, A		; Lade B mit A
2145:		19 			ADD HL, DE	; ADD HL, DE
2146:		10 FD     		DJNZ		; DJNZ
2148:		22 50 23		LD (2350), HL	; Lade (2350) mit HL
214B:		21 00 23		LD HL, 2300	; Lade HL mit 2300
214E:		3A 50 23		LD A, (2350)	; Lade A mit (2350)

2151:		CD D9 08		CALL (08D9)	; Rufe TWOSEG
2154:		21 02 23		LD HL, 2302	; Lade HL mit 2302
2157:		3A 51 23		LD A, (2351)	; Lade A mit (2351)

215A:		CD D9 08		CALL (08D9)	; Rufe TWOSEG
215D:		3E 00			LD A, 00	; Lade A, 00
215F:		57			LD D, A		; Lade D, A
2160:		5F			LD E, A		; Lade E, A
2161:		DD 21 00 23		LD IX, 2300	; Lade IX 2300
2165:		CD 5A 08		CAll (085A)	; Rufe DAK1
2168:		CD 50 22		CALL (2250)	; Rufe (2250)
216B:		C3 23 20		JP			; Springe

Div:
2180:		3A 51 23		LD A, (2351)	; Lade A mit (2351)
2183:		0E 00			LD C, 00	; Lade C mit 00
2185:		FE 00			CP A, 00	; CP A, 00
2187:		CA 11 22		JP Z (22 11)	; JP Z MAth Error
218A:		47			LD B, A		; Lade B mit A
218B: 		3A 50 23		LD A, (2350)	; Lade A mit (2350)
218E:		B8			CP A, B		; Vergleiche A mit B
218F:		DA 97 21		JP C 		; Wenn B größer Springe rest anzeige
2192:		90			SUB A, B	; Sutrahiere B von A
2193:		0C			INC C		; erhöhe C um eins
2194:		C3 8E 21		JP back		; Springe Vergleich
2197:		21 00 23		LD HL, 2300	; Lade HL mit 2300
219A:		CD D9 08		CALL (08D9)	; Rufe TWOSEG
219D:		36 48			LD M, 48	; Lade HL mit Segcode für R
219F:		79			LD A, C		; Lade A mit C
21A0:		23			INC HL		; Increment HL
21A1:		CD D9 08		CALL (08D9)	; TWOSEG
21A4:		16 00			LD D, 00	; Lade D, A
21A6:		1E 00			LD E, 00	; Lade E, A
21A8:		DD 21 00 23		LD IX, 2300	; Lade IX 2300
21AC:		CD 5A 08 		Call (085A)	; Rufe DAK1
21AF:		CD 50 22		CALL (2250)	; Rufe Reset
21B2:		C3 23 20		JP (2023)	; Springe

2200: 		3E E7			LD A, E7	; Lade A, E7
2204: 		32 00 23		LD (2300), A 	; Lade (2300) mit A
2205:		32 01 23		LD (2301), A	; Lade (2301) mit A
2208:		CD 5A 08 		Call (085A)	; Rufe DAK1
220B:		CD 50 22		CALL (2250)	; Rufe Reset
220E:		C3 23 20		JP (2023)		; Springe

2211: 		3E 48
2213: 		32 00 23		LD (2300), A 	; Lade (2300) mit A
2216: 		3E E8
2218: 		32 01 23		LD (2300), A 	; Lade (2300) mit A
221B: 		3E 48
221D: 		32 02 23		LD (2300), A 	; Lade (2300) mit A
2220: 		32 03 23		LD (2300), A 	; Lade (2300) mit A
2223: 		3E CE
2225: 		32 04 23		LD (2300), A 	; Lade (2300) mit A
2228:		CD 5A 08 		Call (085A)	; Rufe DAK1
222B:		CD 50 22		CALL (2250)	; Rufe Reset
222E:		C3 23 20		JP (2023)		; Springe

RESET:
2250: 		D9			EXX		; Lade Alternativregister
2251:		06 06			LD B, 06	; Lade B mit 06
2253:		3E 00			LD A, 00	; Lade A mit 00
2255:		21 00 23		LD HL, 2300	; Lade HL 2300
2258:		77			LD M, A		; Lade M mit A
2259:		23			INC HL		; HL + 1
225A:		10 FC			DJNZ
225C:           32 50 23		LD (2350), A
225F:		32 51 23		LD (2351), A
2262:		D9			EXX
2263:		16 00			LD D, 00
2265:		1E 00			LD E, 00
2267:		C9			RET
Download als .txt


Assamblercode

         ORG 02000H
M1:      LD A, 000h                       ; Lade A mit 0
         LD (02350H), A                   ; Lade 2350 mit A(0)
         LD (02351H), A                   ; Lade 2350 mit A(0)
         LD (02300H), A                   ; Lade 2301 mit A(0)
         LD (02301H), A                   ; Lade 2301 mit A(0)
         LD (02302H), A                   ; Lade 2302 mit A(0)
         LD (02303H), A                   ; Lade 2303 mit A(0)
         LD (02304H), A                   ; Lade 2304 mit A(0)
         LD (02305H), A                   ; Lade 2305 mit A(0)
         LD D, 000H                        ; Lade D mit 0
M2:      LD IX, 02300H                    ; Lade IX mit 2300H
         CAll 085AH                     ; Aufruf DAK1(085A)
M3:      CP  010h                         ; A mit 10 vergleichen
         JP C,  M4                      ; Springe Carry zu Nummern eingabe
         JP     M9                      ; Springe zu Operatoren eingabe
         JP Z,   M9                     ; Springe zu Operatoren eingabe
         HALT

        ;Nummerneingabe:
M4:      LD HL, 02350H                    ; Lade HL 2350
         LD C, A                        ; Lade C mit A
         LD A, D                        ; Lade A mit D
         CP 001H                          ; Vergleiche A mit 01
         JP Z, M5                       ; Springe Wenn A = 01 einsweiter
         JP M6                          ; Springe anderen falls 1 weiter
M5:      INC HL                         ; erhöhe hl um 1
M6:      LD A, (HL)                     ; Lade A mit HL
         CP 000H                         ; Vergleiche A mit 00
         JP Z, M8                       ; Springe A = 00 nach weiter machen
         LD B, A                        ; Lade B, A
         LD A, 00H                       ; Lade A, 00
M7:      ADD A, 010H                      ; Addiere A 10
         LD (HL), A                     ; in HL schreiben
         DJNZ M7                        ; DJNZ
M8:      LD A, (HL)                     ; Lade A, HL
         ADD A, B                       ; Addiere C zu a // Fehler3
         LD (HL), A                     ; Schreibe A in HL
         LD HL, 02300H                    ; Lade HL 2300
         CAll 008D9H                     ; Aufruf TWOSEG
         JP M2                          ; Sprung 201C
;Operatoren Eingabe

M9:      CP 010H                        ; CP A mit 10 und setze E auf 1
         JP Z, M10
         JP M11
M10:     LD E, 001H
         LD D, 001H
M11:     CP 011H                        ; CP A mit 11 und setze E auf 2
         JP Z, M12
         JP M13
M12:     LD E, 002H
         LD D, 001H
M13:     CP 019H                    ; CP A mit 19 und setze E auf 3
         JP Z, M14
         JP M15
M14:     LD E, 003H
         LD D, 001H
M15:     CP 014H                    ; CP A mit 14 und setze E auf 4
         JP Z, M16
         JP M17
M16:     LD E, 004H
         LD D, 001H
M17:     CP 012H                    ; CP A mit 12 und springe Execute (Ausrechenen)
         JP Z, M18
         CP 01FH                    ; CP A mit 1F und springe 2000 (Reset)
         JP Z, M1
         JP M2

;Execute

M18:     LD A, E                    ; Lade A mit E
         CP 01                    ; CP A mit 1 -> JP Add
         JP Z, M19
         CP 02                    ; CP A mit 2 -> JP Sub
         JP Z, M20
         CP 03                    ; CP A mit 3 -> JP Mult
         JP Z, M21
         CP 04                    ; CP A mit 4 -> JP DIV
         JP Z, M23
         JP M2

;Add

M19:         LD A, (02351H)          ; Lade A mit 2351
             LD (02352H), A          ; Lade 2352 mit A
             LD A, 000H          ; Lade A mit 00
             LD (02351H), A          ; Lade 2351 mit A
             LD (02353H), A          ; Lade 2353 mit A
             LD HL, (02350H)          ; Lade HL mit 2350
             LD BC, (02352H)          ; Lade BC mit 2352
             ADD HL, BC          ; ADD HL, BC
             LD (02350H), HL          ; Lade 2350 mit HL
             LD HL, 02300H          ; Lade HL mit 2300
             LD A, (02350H)          ; Lade A mit 3250
             CALL 008D9H          ; Rufe TWOSEG
             LD A, (02351H)          ; Lade A mit 3251
             LD HL, 02302H          ; Lade HL mit 2302
             CALL 008D9H          ; Rufe TWOSEG
             LD A, 000H          ; LADE A, 00
             LD D, A                    ; Lade D, A
             LD E, A                    ; Lade E, A
             LD IX, 02300H          ; Lade IX 2300
             CALL 0085AH          ; Rufe DAK 1
             CALL M27          ; Rufe 2250
             JP M3                    ; Springe
;SUB
M20:         LD HL, 2300          ; Lade HL 2300
             LD A, (02351H)          ; Lade A mit 2351
             LD B, A                    ; Lade B, A
             LD A, (02350H)          ; Lade A mit 2350
             SUB A, B          ; SUB A, B
             CAll 008D9H          ; TWOSEG
             LD A, 000H          ; LADE A, 00
             LD D, A                    ; Lade D, A
             LD E, A                    ; Lade E, A
             LD IX, 02300H          ; Lade IX 2300
             CAll 0085AH          ; Rufe DAK 1
             CALL M27          ; Rufe 2250
             JP M3                   ; Springe

;Mult:
M21:      LD A, 000H          ; Lade A mit 00
          LD (02352H), A          ; Lade 2351 mit A
          LD A, (02350H)          ; Lade A mit 2350
          CP 000H        ; Vergleiche A mit 00
          JP Z, M25          ; Springe Null
          LD HL, 00000H          ; Lade HL, 0000
          LD DE, (02351H)          ; Lade DE mit (2351)
          LD B, A                    ; Lade B mit A
M22:      ADD HL, DE          ; ADD HL, DE
          DJNZ M22                  ; DJNZ
          LD (02350H), HL          ; Lade 2350 mit HL
          LD HL, 02300H          ; Lade HL mit 2300
          LD A, (02350H)          ; Lade A mit 2350
          CALL 008D9H          ; Rufe TWOSEG
          LD HL, 02302H          ; Lade HL mit 2302
          LD A, (02351H)          ; Lade A mit 2351
          CALL 008D9H          ; Rufe TWOSEG
          LD A, 00          ; Lade A, 00
          LD D, A                    ; Lade D, A
          LD E, A                    ; Lade E, A
          LD IX, 02300H          ; Lade IX 2300
          CAll 0085AH          ; Rufe DAK1
          CALL M27          ; Rufe 2250
          JP M3                   ; Springe

;Div:
M23:       LD A, (02351H)          ; Lade A mit 2351
           LD C, 000H          ; Lade C mit 00
           CP 000H          ; CP A, 00
           JP Z, M26         ; JP Z MAth Error
           LD B, A                    ; Lade B mit A
           LD A, (02350H)          ; Lade A mit 2350
M24:       CP B                    ; Vergleiche A mit B
           JP C, 02197H                   ; Wenn B größer Springe rest anzeige
           SUB B          ; Sutrahiere B von A
           INC C                    ; erhöhe C um eins
           JP M24                    ; Springe Vergleich
           LD HL, 02300H          ; Lade HL mit 2300
           CALL 008D9H          ; Rufe TWOSEG
           LD HL, 048H          ; Lade HL mit Segcode für R
           LD A, C                    ; Lade A mit C
           INC HL                    ; Increment HL
           CALL 008D9H          ; TWOSEG
           LD D, 000H          ; Lade D, A
           LD E, 000H          ; Lade E, A
           LD IX, 02300H          ; Lade IX 2300
           Call 0085AH          ; Rufe DAK1
           CALL M27          ; Rufe Reset
           JP M3                    ; Springe

           ;NULL
M25:       LD A, 0E7H          ; Lade A, E7
           LD (02300H), A           ; Lade 2300 mit A
           LD (02301H), A          ; Lade 2301 mit A
           Call 0085AH          ; Rufe DAK1
           CALL 02250H          ; Rufe Reset
           JP M3                    ; Springe
M26:       LD A, 048H
           LD (02300H), A           ; Lade 2300 mit A
           LD A, 0E8H
           LD (02300H), A           ; Lade 2300 mit A
           LD A, 048H
           LD (02300H), A           ; Lade 2300 mit A
           LD (02300H), A           ; Lade 2300 mit A
           LD A, 0CEH
           LD (02300H), A           ; Lade 2300 mit A
           Call 0085AH          ; Rufe DAK1
           CALL 02250H          ; Rufe Reset
           JP  M3                    ; Springe
;RESET:
M27:       EXX                    ; Lade Alternativregister
           LD B, 006H          ; Lade B mit 06
           LD A, 000H          ; Lade A mit 00
           LD HL, 02300H          ; Lade HL 2300
M28:       LD (HL), A                    ; Lade M mit A
           INC HL                    ; HL + 1
           DJNZ M28
           LD (02350H), A
           LD (02351H), A
           EXX
           LD D, 000H
           LD E, 000H
           RET

Download als .asm

Home LC-80 Projekt
© by Thomas Körner :: Website optimized for Mozilla Firefox 2 and 1280x1024