; Partner WF/G ROM disassembly (delo v izdelavi)
; Matej Horvat

; ----------------------------------------

0000	SEEK	$0
0000	ORG	$0

; ----------------------------------------

0000	JP	Zacetek

; ----------------------------------------

; Ukazna vrstica, kjer uporabnik lahko izbere zagon z diskete
; ali s trdega diska.

;;UkaznaVrstica:
0003	LD	SP,#FFC0
0006	CALL	PrelomVrstice
0009	LD	A,#2A	; '*'
000B	CALL	GDPUkaz
000E	CALL	BeriInIzpisiZnak
0011	AND	#DF	; Pretvori v uppercase
0013	CP	#41	; 'A'
0015	JP	Z,HDBootSkok
0018	CP	#46	; 'F'
001A	JP	Z,FDBootSkok
;;NeznanUkaz:
001D	LD	A,#3F	; '?'
001F	CALL	GDPUkaz
0022	JR	UkaznaVrstica

; ----------------------------------------

; Nerabljeni nicxelni bajti oz. NOP-i.

0024	DS	66, $00

; ----------------------------------------

; Nerabljen skok.

0066	JP	NeznanUkaz

; ----------------------------------------

; Nerabljene procedure za izpis sxestnajstisxkih sxtevil.

;;IzpisiHex16:
0069	CALL	PrelomVrstice
006C	LD	A,H
006D	CALL	IzpisiHex8
0070	LD	A,L
0071	CALL	IzpisiHex8
0074	LD	A,#20	; ' '
0076	JP	GDPUkaz
;;IzpisiHex8:
0079	PUSH	BC
007A	LD	B,A
007B	SRA	A
007D	SRA	A
007F	SRA	A
0081	SRA	A
0083	AND	#0F
0085	CALL	IzpisiHex4
0088	LD	A,B
0089	AND	#0F
008B	CALL	IzpisiHex4
008E	POP	BC
008F	RET
;;IzpisiHex4:
0090	CP	#0A
0092	JP	M,#0099
0095	ADD	A,#37
0097	JR	#009B
0099	ADD	A,#30
009B	CALL	GDPUkaz
009E	RET

; ----------------------------------------

; Pocxaka, da uporabnik pritisne tipko na tipkovnici,
; nato izpisxe njen znak na GDP.

;;BeriInIzpisiZnak:
009F	IN	A,(#D9)
00A1	BIT	0,A
00A3	JR	Z,BeriInIzpisiZnak	; Cxakaj, da je znak na voljo.
00A5	IN	A,(#D8)
00A7	RES	7,A
00A9	CP	#20
00AB	RET	C	; Cxe je kontrolni znak, koncxamo.

; ----------------------------------------

; Posxlje ukaz na GDP.

;;GDPUkaz:
00AC	CALL	CakajGDP
00AF	OUT	(#20),A
00B1	RET

; ----------------------------------------

; Pocxaka, da GDP koncxa izvajanje morebitnega ukaza.

;;CakajGDP:
00B2	PUSH	AF
00B3	IN	A,(#20)
00B5	AND	#04
00B7	JR	Z,#00B3
00B9	POP	AF
00BA	RET

; ----------------------------------------

; Nerabljena procedura, ki izpisxe presledek na GDP.

;;IzpisiPresledek:
00BB	LD	A,#20
00BD	JR	GDPUkaz

; ----------------------------------------

; Izvede prelom vrstice.

; Pomaknemo vsebino zaslona 12 pikslov navzgor.
;;PrelomVrstice:
00BF	CALL	CakajGDP
00C2	LD	A,(Scroll)
00C5	SUB	#0C
00C7	LD	(Scroll),A
00CA	OUT	(#36),A
00CC	PUSH	HL
; Izbrisxemo novo vrstico.
00CD	LD	HL,#00DE
00D0	CALL	IzpisiNiz
; Premaknemo pero na levo.
00D3	LD	HL,#00F3
00D6	CALL	IzpisiNiz
00D9	POP	HL
; Izberemo nacxin risanja.
00DA	XOR	A
00DB	JP	GDPUkaz

; ----------------------------------------

; Niz ukazov za GDP, ki premakne pero v spodnji levi kot in pobrisxe vrstico.

00DE	DB	$03, $00, $05, $01, $0B, $0B, $0B, $0B
00E6	DB	$0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B
00EE	DB	$0B, $0B, $0B, $0B, $00

; ----------------------------------------

; Niz ukazov za GDP, ki premakne pero na skrajno levo.

00F3	DB	$21, $00, $0D, $00

; ----------------------------------------

; Vstopna tocxka v memory test.

;;MemoryTest:
00F7	LD	HL,#02D1
00FA	CALL	IzpisiPrelomInNiz
00FD	LD	HL,#2000
0100	LD	BC,#FF80
0103	LD	D,#02
0105	LD	A,#00
0107	PUSH	DE
0108	PUSH	AF
0109	CALL	#0114
010C	POP	AF
010D	POP	DE
010E	ADD	A,#55
0110	DEC	D
0111	JR	NZ,#0107
0113	RET

; ----------------------------------------

0114	CALL	#0125
0117	OUT	(#90),A
0119	CALL	#0125
011C	CALL	#0138
011F	OUT	(#88),A
0121	CALL	#0138
0124	RET

; ----------------------------------------

0125	PUSH	AF
0126	PUSH	HL
0127	LD	D,A
0128	CPL
0129	LD	E,A
012A	LD	(HL),D
012B	INC	HL
012C	LD	(HL),E
012D	INC	HL
012E	PUSH	HL
012F	OR	A
0130	SBC	HL,BC
0132	POP	HL
0133	JR	C,#012A
0135	POP	HL
0136	POP	AF
0137	RET

; ----------------------------------------

0138	PUSH	HL
0139	PUSH	AF
013A	LD	D,A
013B	CPL
013C	LD	E,A
013D	LD	A,(HL)
013E	CP	D
013F	JR	NZ,#0151
0141	INC	HL
0142	LD	A,(HL)
0143	CP	E
0144	JR	NZ,#0151
0146	INC	HL
0147	PUSH	HL
0148	OR	A
0149	SBC	HL,BC
014B	POP	HL
014C	JR	C,#013D
014E	POP	AF
014F	POP	HL
0150	RET
0151	LD	HL,#015A
0154	CALL	IzpisiPrelomInNiz
0157	JP	UkaznaVrstica

; ----------------------------------------

; Sporocxilo o neuspelem memory testu.

015A	DB	$21, $00
015C	DZ	"MEMORY ERROR !!!"

; ----------------------------------------

;;Zacetek:
016D	LD	SP,#FFC0

; Inicializacija PIO
0170	LD	A,#07
0172	OUT	(#31),A
0174	OUT	(#33),A
0176	LD	A,#0F
0178	OUT	(#31),A
017A	OUT	(#33),A

017C	LD	A,#18
017E	OUT	(#30),A
0180	LD	A,#6D
0182	OUT	(#32),A
0184	XOR	A
0185	OUT	(#39),A
0187	OUT	(#36),A
0189	LD	(Scroll),A

; (odvecx)
018C	XOR	A
018D	OUT	(#21),A

; Izbira in spust GDP peresa
018F	LD	A,#03
0191	OUT	(#21),A

0193	LD	A,#04	; Pocxistimo GDP sliko...
0195	CALL	GDPUkaz
0198	LD	A,#05	; ... in postavimo pero na levi rob.
019A	CALL	GDPUkaz

019D	XOR	A
019E	OUT	(#39),A
01A0	OUT	(#30),A

01A2	CALL	AVDCInit1
01A5	CALL	AVDCInit2

; Inicializacija SIO "CRT" kanala (za tipkovnico)
01A8	LD	C,#D9
01AA	LD	HL,#02B6
01AD	LD	B,#07
01AF	OTIR

; Inicializacija SIO "LPT" kanala
01B1	LD	C,#DB
01B3	LD	HL,#02B6
01B6	LD	B,#07
01B8	OTIR

; Inicializacija SIO "VAX" kanala
01BA	LD	C,#E1
01BC	LD	HL,#02B6
01BF	LD	B,#07
01C1	OTIR

01C3	LD	SP,#FFC0

; Y koordinata GDP peresa := 100
01C6	LD	A,#64
01C8	OUT	(#2B),A

01CA	LD	HL,#02BD
01CD	CALL	IzpisiPrelomInNiz

; Spet postavimo pero na levi rob.
01D0	LD	A,#05
01D2	CALL	GDPUkaz

01D5	LD	HL,#022D
01D8	CALL	IzpisiPrelomInNiz

01DB	CALL	MemoryTest

01DE	CALL	FDCInit

01E1	CALL	#02EE

01E4	IN	A,(#D9)
01E6	AND	#01	; Je na voljo znak na tipkovnici?
01E8	JP	Z,HDBootSkok
01EB	CALL	BeriInIzpisiZnak
01EE	CP	#03	; Je CTL+C?
01F0	JP	NZ,HDBootSkok
01F3	LD	HL,#01FC
01F6	CALL	IzpisiPrelomInNiz
01F9	JP	UkaznaVrstica

; ----------------------------------------

; Sporocxilo o prekinjenem zagonu.

01FC	DB	$21, $00
01FE	DZ	"Interrupted, press A or F to load the system !"

; ----------------------------------------

; Niz z verzijo programa.

022D	DB	$21, $00
022F	DZ	"[ Boot V 1.1 - WF ]"

; ----------------------------------------

;;IzpisiPrelomInNiz:
0243	CALL	PrelomVrstice
; (se nadaljuje v IzpisiNiz)

; ----------------------------------------

; Izpisxe niz na GDP.
; Prvi bajt niza se zapisxe v GDP-jev register za velikost znakov,
; drugi pa v kontrolni register 2. V praksi je drugi bajt vedno 0,
; lahko bi pa bil 4 za lezxecxe besedilo.

; Vhod:
; HL -> niz, zakljucxen z 0

; Unicxi A.

;;IzpisiNiz:
0246	CALL	CakajGDP
0249	LD	A,(HL)
024A	OUT	(#23),A
024C	INC	HL
024D	LD	A,(HL)
024E	OUT	(#22),A
0250	INC	HL
0251	LD	A,(HL)
0252	OR	A
0253	RET	Z
0254	CALL	GDPUkaz
0257	INC	HL
0258	JR	#0251

; ----------------------------------------

;;Zakasnitev:
025A	PUSH	BC
025B	LD	B,#FF
025D	NOP
025E	DJNZ	#025D
0260	POP	BC
0261	RET

; ----------------------------------------

;;AVDCInit1:
0262	LD	A,#00
0264	OUT	(#39),A
0266	CALL	Zakasnitev
0269	CALL	Zakasnitev
026C	CALL	Zakasnitev
026F	LD	HL,#02AC
0272	XOR	A

; SS1 := 0
0273	OUT	(#3E),A
0275	OUT	(#3F),A

; SS2 := 0
0277	OUT	(#3A),A
0279	OUT	(#3B),A

027B	LD	A,#10
027D	OUT	(#39),A
027F	LD	B,#0A
0281	LD	C,#38
0283	OTIR

0285	RET

; ----------------------------------------

; Vkljucxi AVDC kurzor in ???
;;AVDCInit2:
0286	LD	A,#3D
0288	OUT	(#39),A

; Naslov AVDC kurzorja := 0
028A	XOR	A
028B	OUT	(#3D),A
028D	OUT	(#3C),A

028F	LD	HL,#1FFF
0292	CALL	AVDCNastaviDispAddr

; Zapolni AVDC framebuffer s presledki?
0295	LD	A,#20
0297	OUT	(#34),A
0299	XOR	A
029A	OUT	(#35),A
029C	LD	A,#BB	; Write from cursor to pointer
029E	OUT	(#39),A

02A0	RET

; ----------------------------------------

; Nastavi AVDC inicializacijska registra 10 in 11
; (display address register lower/upper).

; Vhod:
; HL = novi display address

; Unicxi A.

;;AVDCNastaviDispAddr:
02A1	LD	A,#1A
02A3	OUT	(#39),A
02A5	LD	A,L
02A6	OUT	(#38),A
02A8	LD	A,H
02A9	OUT	(#38),A
02AB	RET

; ----------------------------------------

; Inicializacijski niz za AVDC.

02AC	DB	$D0, $2F, $0D, $05, $99, $4F, $0A, $EA
02B4	DB	$00, $30

; ----------------------------------------

; Inicializacijski niz za serijska vrata.

02B6	DB	$18, $04, $44, $03, $C1, $05, $68

; ----------------------------------------

; Zagonsko sporocxilo.

02BD	DB	$A8, $00
02BF	DZ	"Delta Partner GDP"

; ----------------------------------------

; Sporocxilo o testiranju spomina.

02D1	DB	$21, $00
02D3	DZ	"TESTING MEMORY ... "

; ----------------------------------------

; Nerabljen bajt?

02E7	DB	$00

; ----------------------------------------

; ???
; To je v resnici IVT, ki kazxe tudi na FDC handler na 4CA

02E8	DW	$04CA, $05D6, $0524

; ----------------------------------------

; Prazna funkcija; verjetno se je pogojno uporabljala med razvojem.

02EE	RET

; ----------------------------------------

; Nerabljeno.

02EF	NOP
02F0	NOP

; ----------------------------------------

; Nerabljen skok.

02F1	JP	#04CE

; ----------------------------------------

;;HDBootSkok:
02F4	JP	HDBoot

; ----------------------------------------

; Nerabljen skok.

02F7	JP	#05A7

; ----------------------------------------

;;FDBootSkok:
02FA	JP	FDBoot

; ----------------------------------------

;;FDCInit:
02FD	DI
02FE	IM	2
0300	LD	HL,#02E8
0303	LD	A,L
0304	OUT	(#E8),A
0306	OUT	(#C8),A
0308	LD	A,H
0309	LD	I,A
030B	EI
030C	HALT
030D	LD	A,#08
030F	CALL	#0337
0312	CALL	#0345
0315	CALL	#0345
0318	LD	A,#03
031A	CALL	#0337
031D	LD	A,#0D
031F	AND	#0F
0321	RLCA
0322	RLCA
0323	RLCA
0324	RLCA
0325	LD	B,A
0326	LD	A,#0E
0328	AND	#0F
032A	OR	B
032B	CALL	#0337
032E	LD	A,#04
0330	RLCA
0331	AND	#FE
0333	CALL	#0337
0336	RET

; ----------------------------------------

0337	PUSH	AF
0338	IN	A,(#F0)
033A	AND	#C0
033C	CP	#80
033E	JP	NZ,#0338
0341	POP	AF
0342	OUT	(#F1),A
0344	RET

; ----------------------------------------

0345	IN	A,(#F0)
0347	AND	#C0
0349	CP	#C0
034B	JP	NZ,#0345
034E	IN	A,(#F1)
0350	RET

; ----------------------------------------

0351	LD	A,#07
0353	CALL	#0337
0356	LD	A,(Neznano1)
0359	CALL	#0337
035C	EI
035D	HALT
035E	LD	A,#08
0360	CALL	#0337
0363	CALL	#0345
0366	CALL	#0345
0369	XOR	A
036A	LD	(Neznano2),A
036D	LD	(Neznano6),A
0370	RET

; ----------------------------------------

0371	CALL	#03ED
0374	RET	NZ
0375	LD	A,#0A
0377	LD	(Neznano5),A
037A	LD	A,#05
037C	OUT	(#C0),A
037E	LD	A,#CF
0380	OUT	(#C0),A
0382	CALL	#045C
0385	LD	HL,#046E
0388	OTIR
038A	LD	A,#06
038C	OR	#40
038E	CALL	#042A
0391	CALL	#0446
0394	EI
0395	HALT
0396	JP	C,#03AB
0399	IN	A,(#98)
039B	AND	#01
039D	JP	NZ,#0394
03A0	LD	HL,#0529
03A3	CALL	IzpisiPrelomInNiz
03A6	OUT	(#98),A
03A8	JP	#0394
03AB	LD	A,#03
03AD	OUT	(#CA),A
03AF	CALL	#0345
03B2	CALL	#0345
03B5	PUSH	AF
03B6	LD	B,#05
03B8	CALL	#0345
03BB	DEC	B
03BC	JP	NZ,#03B8
03BF	POP	AF
03C0	CP	#80
03C2	RET	Z
03C3	LD	A,(Neznano5)
03C6	OR	A
03C7	JP	Z,#03EB
03CA	DEC	A
03CB	LD	(Neznano5),A
03CE	LD	A,(Neznano2)
03D1	PUSH	AF
03D2	INC	A
03D3	LD	(Neznano2),A
03D6	LD	A,(Neznano6)
03D9	PUSH	AF
03DA	CALL	#03ED
03DD	POP	AF
03DE	LD	(Neznano6),A
03E1	POP	AF
03E2	LD	(Neznano2),A
03E5	CALL	#03ED
03E8	JP	#037A
03EB	INC	A
03EC	RET

; ----------------------------------------

03ED	CALL	#0501
03F0	LD	A,#0F
03F2	CALL	#0337
03F5	CALL	#041B
03F8	CALL	#0337
03FB	LD	A,(Neznano2)
03FE	CALL	#0337
0401	EI
0402	HALT
0403	LD	A,#08
0405	CALL	#0337
0408	CALL	#0345
040B	CALL	#0345
040E	LD	B,A
040F	LD	A,(Neznano2)
0412	CP	B
0413	JP	Z,#0419
0416	XOR	A
0417	INC	A
0418	RET
0419	XOR	A
041A	RET

; ----------------------------------------

041B	LD	A,(Neznano6)
041E	RLCA
041F	RLCA
0420	AND	#04
0422	PUSH	BC
0423	LD	B,A
0424	LD	A,(Neznano1)
0427	OR	B
0428	POP	BC
0429	RET

; ----------------------------------------

042A	CALL	#0337
042D	CALL	#041B
0430	CALL	#0337
0433	LD	A,(Neznano2)
0436	CALL	#0337
0439	LD	A,(Neznano6)
043C	CALL	#0337
043F	LD	A,(Neznano4)
0442	CALL	#0337
0445	RET

; ----------------------------------------

0446	LD	A,#01
0448	CALL	#0337
044B	LD	A,(Neznano4)
044E	CALL	#0337
0451	LD	A,#0A
0453	CALL	#0337
0456	LD	A,#FF
0458	CALL	#0337
045B	RET

; ----------------------------------------

045C	LD	A,#79
045E	OUT	(#C0),A
0460	LD	HL,(Neznano3)
0463	LD	A,L
0464	OUT	(#C0),A
0466	LD	A,H
0467	OUT	(#C0),A
0469	LD	B,#0B
046B	LD	C,#C0
046D	RET

; ----------------------------------------

; Init string za FDC???

046E	DB	$FF, $00, $14, $28, $85, $F1, $8A, $CF
0476	DB	$01, $CF, $87, $FF, $00, $14, $28, $85
047E	DB	$F1, $8A, $CF, $05, $CF, $87

; ----------------------------------------

;;FDNaloziCPMLDR:
0484	LD	A,#13
0486	LD	(Neznano7),A
0489	XOR	A
048A	LD	(Neznano1),A
048D	CALL	#0351
0490	LD	HL,#E000
0493	LD	(Neznano3),HL
0496	XOR	A
0497	INC	A
0498	LD	(Neznano4),A
049B	CALL	#0371
049E	JP	NZ,#06D1
04A1	LD	DE,#0100
04A4	LD	HL,(Neznano3)
04A7	ADD	HL,DE
04A8	LD	(Neznano3),HL
04AB	LD	A,(Neznano4)
04AE	INC	A
04AF	LD	(Neznano4),A
04B2	LD	HL,#FFD8
04B5	CP	(HL)
04B6	JP	NZ,#049B
04B9	LD	A,(Neznano6)
04BC	OR	A
04BD	RET	NZ
04BE	INC	A
04BF	LD	(Neznano6),A
04C2	LD	A,#0E
04C4	LD	(Neznano7),A
04C7	JP	#0496

; ----------------------------------------

;;FDCIntHandler:
04CA	EI
04CB	SCF
04CC	RETI

; ----------------------------------------

; Sem skocxi procedura na 02F1, ki ni nikoli klicana, torej tudi
; to ni nikoli klicano.

04CE	CALL	FDNaloziCPMLDR
04D1	JP	UkaznaVrstica

; ----------------------------------------

;;FDBoot:
04D4	CALL	FDNaloziCPMLDR
04D7	LD	A,(CPMLDR)	; Prvi bajt prvega sektorja...
04DA	CP	#C3	; ... mora biti opcode za brezpogojni JP...
04DC	JP	Z,#04EA
04DF	CP	#31	; ... ali LD SP, nn
04E1	JP	Z,#04EA
04E4	LD	HL,#0593
04E7	JP	Napaka

; Nalagalnik OSa je nalozxen; skocximo vanj
04EA	JP	Trampolin

; ----------------------------------------

04ED	IN	A,(#98)
04EF	AND	#01
04F1	RET

; ----------------------------------------

04F2	LD	A,#FF
04F4	PUSH	BC
04F5	LD	B,#FF
04F7	DEC	B
04F8	JP	NZ,#04F7
04FB	DEC	A
04FC	JP	NZ,#04F5
04FF	POP	BC
0500	RET

; ----------------------------------------

0501	CALL	#04ED
0504	JP	NZ,#050C
0507	OUT	(#98),A
0509	CALL	#04F2
050C	XOR	A
050D	OUT	(#98),A
050F	LD	A,#47
0511	OUT	(#C8),A
0513	OUT	(#C9),A
0515	LD	A,#82
0517	OUT	(#C8),A
0519	OUT	(#C9),A
051B	LD	A,#A7
051D	OUT	(#CA),A
051F	LD	A,#FF
0521	OUT	(#CA),A
0523	RET

; ----------------------------------------

;;NeznanIntHandler:
0524	EI
0525	SCF
0526	CCF
0527	RETI

; ----------------------------------------

; Sporocxilo, da disketni pogon ni pripravljen.

0529	DB	$21, $00
052B	DZ	"FLOPPY DISK NOT READY !!!!"

; ----------------------------------------

;;HDBoot:
0546	CALL	HDNaloziCPMLDR
0549	LD	A,(CPMLDR)	; Prvi bajt prvega sektorja...
054C	CP	#31	; ... mora biti opcode za LD SP, nn
054E	JP	Z,#0557
0551	LD	HL,#0593
0554	JP	Napaka

; Kopiramo ROM na 2000h
0557	LD	HL,#0000
055A	LD	DE,#2000
055D	LD	BC,#0800
0560	LDIR

; Kopiramo interrupt handler(?)
0562	LD	HL,#0761
0565	LD	DE,#C000
0568	LD	BC,#006C
056B	LDIR

056D	DI
056E	LD	A,#03
0570	OUT	(#C8),A
0572	OUT	(#C9),A
0574	LD	HL,#C000
0577	LD	A,H
0578	LD	I,A
057A	LD	A,L
057B	OUT	(#E8),A
057D	OUT	(#C8),A
057F	LD	A,#47
0581	OUT	(#C8),A
0583	LD	A,#FF
0585	OUT	(#C8),A
0587	LD	A,#C7
0589	OUT	(#C9),A
058B	LD	A,#64
058D	OUT	(#C9),A
058F	EI

; Nalagalnik OSa je nalozxen; skocximo vanj
0590	JP	Trampolin

; ----------------------------------------

; Sporocxilo, da trdi disk ni zagonski.

0593	DB	$21, $00
0595	DZ	"NO SYSTEM ON DISK"

; ----------------------------------------

; Sem skocxi procedura na 02F7, ki ni nikoli klicana, torej tudi
; to ni nikoli klicano.

05A7	CALL	HDNaloziCPMLDR
05AA	JP	UkaznaVrstica

; ----------------------------------------

05AD	XOR	A
05AE	OUT	(#12),A
05B0	DI
05B1	LD	A,#47
05B3	OUT	(#C8),A
05B5	LD	A,#FF
05B7	OUT	(#C8),A
05B9	LD	A,#C7
05BB	OUT	(#C9),A
05BD	LD	A,#50
05BF	OUT	(#C9),A
05C1	EI
05C2	CALL	#05FC
05C5	LD	HL,#0755
05C8	CALL	#063D
05CB	CALL	#0662
05CE	JP	NZ,#05C5
05D1	LD	A,#03
05D3	OUT	(#C9),A
05D5	RET

; ----------------------------------------

;;CTCIntHandler:
05D6	LD	A,#03
05D8	OUT	(#C9),A
05DA	CALL	IzvediRETI
05DD	EI
05DE	LD	HL,#05E6
05E1	JP	Napaka

; ----------------------------------------

;;IzvediRETI:
05E4	RETI

; ----------------------------------------

; Sporocxilo, da trdi disk ni pripravljen.

05E6	DB	$21, $00
05E8	DZ	"HARD DISK NOT READY"

; ----------------------------------------

05FC	LD	HL,#0747
05FF	CALL	#0652
0602	CALL	#0662
0605	RET	Z
0606	LD	A,#34
0608	JP	#06D7

; ----------------------------------------

;;HDNaloziCPMLDR:
060B	CALL	#05AD
060E	LD	A,#C3
0610	OUT	(#C0),A
0612	LD	HL,#075B
0615	CALL	#063D
0618	IN	A,(#10)
061A	AND	#40
061C	JP	Z,#0618
061F	IN	A,(#10)
0621	AND	#10
0623	JP	NZ,#0634
0626	LD	A,#22
0628	OUT	(#10),A
062A	CALL	#06A9
062D	IN	A,(#10)
062F	AND	#10
0631	JP	Z,#062D
0634	CALL	#0662
0637	RET	Z
0638	LD	A,#32
063A	JP	#06D7

; ----------------------------------------

063D	CALL	#067F
0640	CALL	#069B
0643	LD	B,A
0644	AND	#10
0646	RET	Z
0647	LD	A,B
0648	AND	#40
064A	RET	NZ
064B	LD	A,(HL)
064C	OUT	(#11),A
064E	INC	HL
064F	JP	#0640

; ----------------------------------------

0652	CALL	#067F
0655	CALL	#069B
0658	AND	#40
065A	RET	NZ
065B	LD	A,(HL)
065C	OUT	(#11),A
065E	INC	HL
065F	JP	#0655

; ----------------------------------------

0662	CALL	#069B
0665	AND	#10
0667	JP	NZ,#066F
066A	LD	A,#42
066C	JP	#06D7
066F	IN	A,(#11)
0671	LD	B,A
0672	INC	HL
0673	CALL	#069B
0676	IN	A,(#11)
0678	XOR	A
0679	OUT	(#10),A
067B	LD	A,B
067C	AND	#03
067E	RET

; ----------------------------------------

067F	IN	A,(#10)
0681	AND	#08
0683	JP	Z,#068B
0686	LD	A,#41
0688	JP	#06D7
068B	LD	A,#01
068D	OUT	(#10),A
068F	IN	A,(#10)
0691	AND	#08
0693	JP	Z,#068F
0696	LD	A,#02
0698	OUT	(#10),A
069A	RET

; ----------------------------------------

069B	IN	A,(#10)
069D	RLA
069E	JP	NC,#069B
06A1	RRA
06A2	RET

; ----------------------------------------

06A3	LD	HL,#06C2
06A6	JP	#06AC

; ----------------------------------------

06A9	LD	HL,#06B3
06AC	LD	C,#C0
06AE	LD	B,#0F
06B0	OTIR
06B2	RET

; ----------------------------------------

; ??? init string za DMA

06B3	DB	$79, $00, $E0, $FF, $1E, $14, $28, $95
06BB	DB	$11, $00, $8A, $CF, $01, $CF, $87

; ----------------------------------------

; ??? init string za DMA

06C2	DB	$79, $00, $E0, $FF, $1E, $14, $28, $95
06CA	DB	$11, $00, $8A, $CF, $05, $CF, $87

; ----------------------------------------

06D1	LD	HL,#06E0
06D4	JP	Napaka
06D7	LD	HL,#0714
;;Napaka:
06DA	CALL	IzpisiPrelomInNiz
06DD	JP	UkaznaVrstica

; ----------------------------------------

; Sporocxilo, da je nekaj narobe z disketnim pogonom.

06E0	DB	$21, $00
06E2	DZ	"FLOPPY DISK MALFUNCTION !!!RETRY WITH COMMAND  F "

; ----------------------------------------

; Sporocxilo, da je nekaj narobe s trdim diskom.

0714	DB	$21, $00
0716	DZ	"HARD DISK MALFUNCTION >>> RETRY WITH COMMAND  A "

; ----------------------------------------

; ???

0747	DB	$0C, $00, $00, $00, $00, $00, $01, $32
074F	DB	$04, $00, $80, $00, $40, $0B, $01, $00
0757	DB	$00, $00, $00, $00, $08, $00, $00, $00
075F	DB	$1F, $00

; ----------------------------------------

; IVT z 2 vnosoma za ???, ki kazxeta na rutino spodaj, ko je prekopirana.

0761	DW	$C004, $C004

; ----------------------------------------

; Rutina za ???, ki se prekopira na C000 skupaj z zgornjim IVT.

0765	DI
0766	LD	A,#03
0768	OUT	(#C8),A
076A	OUT	(#C9),A
076C	OUT	(#88),A
076E	LD	HL,#2000
0771	LD	DE,#0000
0774	LD	BC,#0800
0777	LDIR
0779	LD	HL,#02E8
077C	LD	A,L
077D	OUT	(#E8),A
077F	OUT	(#C8),A
0781	LD	A,H
0782	LD	I,A
0784	EI
0785	CALL	IzvediRETI
0788	LD	HL,#078E
078B	JP	IzpisiPrelomInNiz

; ----------------------------------------

; Sporocxilo o napaki pri nalaganju s trdega diska, ki se nikoli ne izpisxe?

078E	DB	$11, $00
0790	DZ	"LOADING ERROR FROM HARD DISK TRY TO LOAD SYSTEM FROM FLOPPY "

; ----------------------------------------

; Konec, nicx vecx zanimivega

07CD	DB	$FF
07CE	DS	50, $1A

; ----------------------------------------

;; F600: Trampolin
;; E000: CPMLDR
;; FFEB: Scroll
;; FFD0: Neznano1
;; FFD1: Neznano2
;; FFD2: Neznano3
;; FFD4: Neznano4
;; FFD5: Neznano5
;; FFD7: Neznano6
;; FFD8: Neznano7