;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: -----------------------------------------------------------------