;OP1S=DATA
;OP2S=DATA
0000: start:
0000:		callp	DisplayOkButtonUp
0003:		callp	DrawEditSerial
0006:		push	aUnregistered		; "Unregistered"
000D:		callp	DrawEditState
0010:		push	0Ah
0014:		push	0Ch
0018:		push	0
001C:		push	OP2S.[mem_82D]
0021:		push	offset aSerial		; "Serial:"
0028:		callp	WriteLabel
002B:		xor	reg_0, reg_0
002D:		inc	reg_0
002F:		set	RepaintControls, reg_0
0033:		xor	reg_13, reg_13
0035:		xor	reg_12, reg_12
0037: __GetChar:
0037:		[!] OP1S=DATA
0038:		get	reg_0, Char
003C:		cmp	reg_0, 0
003C:		jz	__CheckMouse
0040:		cmp	reg_0, 8
0040:		jz	__DelChar
0046:		cmp	reg_0, 020h
0046:		jl	__GetChar
004C:		cmp	reg_13, 0Fh
004C:		jz	__GetChar
0052:		mov	reg_1, offset SerialBuffer
0059:		add	reg_1, reg_13
005B:		mov	OP1S.[d@[reg_1]], reg_0
005E:		inc	reg_13
0060: __RedrawEditSerial:
0060:		callp	DrawEditSerial
0063: __DisplayControls:
0063:		xor	reg_0, reg_0
0065:		set	Char, reg_0
0069:		callp	SetRepaint
006C:		jmp	__GetChar
006C: -----------------------------------------------------------------
006F: __DelChar:
006F:		cmp	reg_13, 0
006F:		jz	__DisplayControls
0073:		dec	reg_13
0075:		xor	reg_0, reg_0
0077:		mov	reg_1, offset SerialBuffer
007E:		add	reg_1, reg_13
0080:		mov	OP1S.[d@[reg_1]], reg_0
0083:		jmp	__RedrawEditSerial
0083: -----------------------------------------------------------------
0086: __CheckMouse:
0086:		get	reg_0, MouseX
008A:		cmp	reg_0, 0C8h
008A:		jl	loc_E4
0090:		cmp	reg_0, 0109h
0090:		jg	loc_E4
0097:		get	reg_0, MouseY
009B:		shl	reg_0, 1
009F:		shr	reg_0, 1
00A3:		cmp	reg_0, 0Ah
00A3:		jl	loc_E4
00A9:		cmp	reg_0, 01Eh
00A9:		jg	loc_E4
00AF:		get	reg_0, MouseY
00B3:		shr	reg_0, 01Fh
00B7:		cmp	reg_0, 0
00B7:		jz	__MouseUp
00BB:		cmp	reg_12, 0
00BB:		jnz	__GetChar
00BF:		inc	reg_12
00C1:		callp	LoadOkButtonParams
00C4:		callp	DisplayOkButtonDown
00C7:		callp	SetRepaint
00CA:		jmp	__GetChar
00CA: -----------------------------------------------------------------
00CD: __MouseUp:
00CD:		cmp	reg_12, 0
00CD:		jz	__GetChar
00D1:		xor	reg_12, reg_12
00D3:		callp	CheckSerial
00D6:		pop	reg_3
00D8:		jmp	loc_EC
00D8: -----------------------------------------------------------------
00DB: SetRepaint	proc
00DB:		xor	reg_0, reg_0
00DD:		inc	reg_0
00DF:		set	RepaintControls, reg_0
00E3:		retp
00E3: SetRepaint	endp
00E3: -----------------------------------------------------------------
00E4: loc_E4:
00E4:		cmp	reg_12, 0
00E4:		jz	__GetChar
00E8:		xor	reg_12, reg_12
00EA:		xor	reg_3, reg_3
00EC: loc_EC:
00EC:		callp	DisplayOkButtonUp
00EF:		callp	SetRepaint
00F2:		cmp	reg_3, 0
00F2:		jz	__GetChar
00F6:		[!] HALT
00F6: -----------------------------------------------------------------
00F7: CheckSerial	proc
00F7:		mov	reg_0, offset aSerial	; "Serial:"
00FE:		mov	reg_1, offset SerialBuffer
0105: loc_105:
0105:		xor	reg_13, reg_13
0107:		mov	reg_2, OP2S.[d@[reg_0]]
010A:		mov	reg_3, OP2S.[d@[reg_1]]
010D:		and	reg_2, 0FFh
0111:		and	reg_3, 0FFh
0115:		inc	reg_0
0117:		inc	reg_1
0119:		cmp	reg_3, reg_2
0119:		jnz	loc_12D
011D:		cmp	reg_2, 0
011D:		jnz	loc_105
0121:		push	offset aRegistered	; "Registered"
0128:		callp	DrawEditState
012B:		inc	reg_13
012D: loc_12D:
012D:		push	reg_13
012F:		retp
012F: CheckSerial	endp
012F: -----------------------------------------------------------------
0130: DisplayOkButtonUp	proc
0130:		callp	LoadOkButtonParams
0133:		callp	DrawOkButtonUp
0136:		retp
0136: DisplayOkButtonUp	endp
0136: -----------------------------------------------------------------
0137: LoadOkButtonParams	proc
0137:		push	0C8h
013B:		push	0Ah
013F:		push	041h
0143:		push	014h
0147:		push	offset aOk		; "Ok"
014E:		retp
014E: LoadOkButtonParams	endp
014E: -----------------------------------------------------------------
014F: DrawEditState	proc
014F:		pop	reg_0
0151:		push	032h
0155:		push	028h
0159:		push	082h
015D:		push	014h
0161:		push	reg_0
0163:		callp	sub_312
0166:		retp
0166: DrawEditState	endp
0166: -----------------------------------------------------------------
0167: DrawEditSerial	proc
0167:		push	032h
016B:		push	0Ah
016F:		push	082h
0173:		push	014h
0177:		push	offset SerialBuffer
017E:		callp	sub_2AE
0181:		retp
0181: DrawEditSerial	endp
0181: -----------------------------------------------------------------
0182: sub_182	proc
0182:		pop	reg_13
0184:		pop	reg_12
0186:		pop	reg_11
0188:		pop	reg_10
018A:		pop	reg_9
018C:		[!] OP1S=VIDEO
018D:		add	reg_12, reg_10
018F:		add	reg_11, reg_9
0191:		push	reg_9
0193: loc_193:
0193:		pop	reg_9
0195:		push	reg_9
0197:		mov	reg_8, reg_10
0199:		imul	reg_8, 0113h
019E:		add	reg_8, reg_9
01A0:		imul	reg_8, 4
01A4: loc_1A4:
01A4:		mov	OP1S.[d@[reg_8]], reg_13
01A7:		add	reg_8, 4
01AB:		inc	reg_9
01AD:		cmp	reg_11, reg_9
01AD:		jnz	loc_1A4
01B1:		inc	reg_10
01B3:		cmp	reg_12, reg_10
01B3:		jnz	loc_193
01B7:		pop	reg_9
01B9:		retp
01B9: sub_182	endp
01B9: -----------------------------------------------------------------
01BA: sub_1BA	proc
01BA:		push	reg_9
01BC:		push	reg_10
01BE:		push	reg_11
01C0:		push	reg_12
01C2:		push	reg_13
01C4:		retp
01C4: sub_1BA	endp
01C4: -----------------------------------------------------------------
01C5: DrawOkButtonUp	proc
01C5:		[!] OP1S=DATA
01C6:		[!] OP2S=DATA
01C7:		pop	reg_0
01C9:		pop	reg_13
01CB:		pop	reg_12
01CD:		pop	reg_11
01CF:		pop	reg_10
01D1:		mov	reg_9, 2
01D5:		add	reg_11, reg_9
01D7:		add	reg_10, reg_9
01D9:		sub	reg_13, reg_9
01DB:		sub	reg_13, reg_9
01DD:		sub	reg_12, reg_9
01DF:		sub	reg_12, reg_9
01E1:		xor	reg_9, reg_9
01E3:		callp	sub_1BA
01E6:		mov	reg_2, OP2S.[mem_82D]
01EB:		push	reg_2
01ED:		xor	reg_9, reg_9
01EF:		inc	reg_9
01F1:		sub	reg_10, reg_9
01F3:		sub	reg_11, reg_9
01F5:		add	reg_12, reg_9
01F7:		add	reg_13, reg_9
01F9:		callp	sub_1BA
01FC:		push	OP2S.[mem_831]
0201:		add	reg_12, reg_9
0203:		add	reg_13, reg_9
0205:		callp	sub_1BA
0208:		push	OP2S.[mem_835]
020D:		sub	reg_10, reg_9
020F:		sub	reg_11, reg_9
0211:		add	reg_12, reg_9
0213:		add	reg_13, reg_9
0215:		callp	sub_1BA
0218:		push	OP2S.[mem_829]
021D:		add	reg_12, reg_9
021F:		add	reg_13, reg_9
0221:		callp	sub_1BA
0224:		xor	reg_9, reg_9
0226:		push	reg_9
0228: loc_228:
0228:		callp	sub_182
022B:		pop	reg_9
022D:		cmp	reg_9, 0
022D:		jnz	loc_228
0231:		push	reg_0
0233:		callp	sub_33D
0236:		pop	reg_1
0238:		sub	reg_12, reg_1
023A:		idiv	reg_12, 2
023E:		add	reg_10, reg_12
0240:		sub	reg_13, 0Ch
0244:		idiv	reg_13, 2
0248:		add	reg_11, reg_13
024A:		push	reg_10
024C:		push	reg_11
024E:		push	0
0252:		push	reg_2
0254:		push	reg_0
0256:		callp	WriteLabel
0259:		retp
0259: DrawOkButtonUp	endp
0259: -----------------------------------------------------------------
025A: DisplayOkButtonDown	proc
025A:		[!] OP1S=DATA
025B:		[!] OP2S=DATA
025C:		pop	reg_0
025E:		pop	reg_13
0260:		pop	reg_12
0262:		pop	reg_11
0264:		pop	reg_10
0266:		mov	reg_9, 2
026A:		add	reg_11, reg_9
026C:		add	reg_10, reg_9
026E:		sub	reg_13, reg_9
0270:		sub	reg_13, reg_9
0272:		sub	reg_12, reg_9
0274:		sub	reg_12, reg_9
0276:		xor	reg_9, reg_9
0278:		callp	sub_1BA
027B:		mov	reg_2, OP2S.[mem_82D]
0280:		push	reg_2
0282:		inc	reg_9
0284:		sub	reg_10, reg_9
0286:		sub	reg_11, reg_9
0288:		add	reg_12, reg_9
028A:		add	reg_13, reg_9
028C:		add	reg_13, reg_9
028E:		add	reg_12, reg_9
0290:		callp	sub_1BA
0293:		push	OP2S.[mem_835]
0298:		sub	reg_10, reg_9
029A:		sub	reg_11, reg_9
029C:		add	reg_12, reg_9
029E:		add	reg_13, reg_9
02A0:		add	reg_13, reg_9
02A2:		add	reg_12, reg_9
02A4:		callp	sub_1BA
02A7:		xor	reg_9, reg_9
02A9:		push	reg_9
02AB:		jmp	loc_228
02AB: -----------------------------------------------------------------
02AE: sub_2AE	proc
02AE:		pop	reg_0
02B0:		[!] OP1S=DATA
02B1:		[!] OP2S=DATA
02B2:		pop	reg_13
02B4:		pop	reg_12
02B6:		pop	reg_11
02B8:		pop	reg_10
02BA:		mov	reg_9, 2
02BE:		add	reg_11, reg_9
02C0:		add	reg_10, reg_9
02C2:		sub	reg_13, reg_9
02C4:		sub	reg_13, reg_9
02C6:		sub	reg_12, reg_9
02C8:		sub	reg_12, reg_9
02CA:		xor	reg_9, reg_9
02CC:		callp	sub_1BA
02CF:		mov	reg_2, OP2S.[mem_829]
02D4:		push	reg_2
02D6: loc_2D6:
02D6:		inc	reg_9
02D8:		sub	reg_10, reg_9
02DA:		sub	reg_11, reg_9
02DC:		add	reg_12, reg_9
02DE:		add	reg_13, reg_9
02E0:		callp	sub_1BA
02E3:		push	0
02E7:		add	reg_12, reg_9
02E9:		add	reg_13, reg_9
02EB:		callp	sub_1BA
02EE:		push	OP2S.[mem_831]
02F3:		sub	reg_10, reg_9
02F5:		sub	reg_11, reg_9
02F7:		add	reg_12, reg_9
02F9:		add	reg_13, reg_9
02FB:		callp	sub_1BA
02FE:		push	OP2S.[mem_835]
0303:		add	reg_12, reg_9
0305:		add	reg_13, reg_9
0307:		callp	sub_1BA
030A:		push	OP2S.[mem_829]
030F:		jmp	loc_228
030F: -----------------------------------------------------------------
0312: sub_312	proc
0312:		[!] OP1S=DATA
0313:		[!] OP2S=DATA
0314:		pop	reg_0
0316:		pop	reg_13
0318:		pop	reg_12
031A:		pop	reg_11
031C:		pop	reg_10
031E:		mov	reg_9, 2
0322:		add	reg_11, reg_9
0324:		add	reg_10, reg_9
0326:		sub	reg_13, reg_9
0328:		sub	reg_13, reg_9
032A:		sub	reg_12, reg_9
032C:		sub	reg_12, reg_9
032E:		xor	reg_9, reg_9
0330:		callp	sub_1BA
0333:		mov	reg_2, OP2S.[mem_82D]
0338:		push	reg_2
033A:		jmp	loc_2D6
033A: -----------------------------------------------------------------
033D: sub_33D	proc
033D:		pop	reg_0
033F:		xor	reg_2, reg_2
0341: loc_341:
0341:		mov	reg_1, OP2S.[d@[reg_0]]
0344:		inc	reg_0
0346:		and	reg_1, 0FFh
034A:		cmp	reg_1, 0
034A:		jz	loc_369
034E:		sub	reg_1, 020h
0352:		imul	reg_1, 019h
0356:		add	reg_1, 0839h
035D:		mov	reg_1, OP2S.[d@[reg_1]]
0360:		and	reg_1, 0FFh
0364:		add	reg_2, reg_1
0366:		jmp	loc_341
0366: -----------------------------------------------------------------
0369: loc_369:
0369:		push	reg_2
036B:		retp
036B: sub_33D	endp
036B: -----------------------------------------------------------------
036C: WriteLabel	proc
036C:		pop	reg_4
036E:		pop	reg_0
0370:		pop	reg_1
0372:		pop	reg_2
0374:		pop	reg_3
0376:		[!] OP1S=VIDEO
0377: loc_377:
0377:		mov	reg_5, OP2S.[d@[reg_4]]
037A:		inc	reg_4
037C:		and	reg_5, 0FFh
0380:		cmp	reg_5, 0
0380:		jz	loc_3EC
0384:		sub	reg_5, 020h
0388:		imul	reg_5, 019h
038C:		add	reg_5, 0839h
0393:		mov	reg_6, OP2S.[d@[reg_5]]
0396:		and	reg_6, 0FFh
039A:		inc	reg_5
039C:		push	reg_6
039E:		xor	reg_12, reg_12
03A0: loc_3A0:
03A0:		pop	reg_6
03A2:		push	reg_6
03A4:		mov	reg_13, reg_2
03A6:		add	reg_13, reg_12
03A8:		imul	reg_13, 0113h
03AD:		add	reg_13, reg_3
03AF:		imul	reg_13, 4
03B3:		inc	reg_12
03B5:		mov	reg_8, 010000h
03BB: loc_3BB:
03BB:		dec	reg_6
03BD:		mov	reg_7, OP2S.[d@[reg_5]]
03C0:		shr	reg_8, 1
03C4:		and	reg_7, reg_8
03C6:		cmp	reg_7, 0
03C6:		jz	loc_3D0
03CA:		mov	OP1S.[d@[reg_D]], reg_1
03CD:		jmp	loc_3D3
03CD: -----------------------------------------------------------------
03D0: loc_3D0:
03D0:		mov	OP1S.[d@[reg_D]], reg_0
03D3: loc_3D3:
03D3:		add	reg_13, 4
03D7:		cmp	reg_6, 0
03D7:		jnz	loc_3BB
03DB:		add	reg_5, 2
03DF:		cmp	reg_12, 0Ch
03DF:		jnz	loc_3A0
03E5:		pop	reg_6
03E7:		add	reg_3, reg_6
03E9:		jmp	loc_377
03E9: -----------------------------------------------------------------
03EC: loc_3EC:
03EC:		retp
03EC: WriteLabel	endp
03EC: -----------------------------------------------------------------