C1/488D: C2 31 REP #$31 C1/488F: 0B PHD C1/4890: 48 PHA C1/4891: 7B TDC C1/4892: 69 F2 FF ADC #$FFF2 C1/4895: 5B TCD C1/4896: 68 PLA C1/4897: E0 00 00 CPX #$0000 C1/489A: F0 03 BEQ $489F C1/489C: 8A TXA C1/489D: 80 05 BRA $48A4 C1/489F: 20 DC 03 JSR $03DC C1/48A2: A5 06 LDA $06 C1/48A4: 20 B6 0C JSR $0CB6 C1/48A7: A9 00 00 LDA #$0000 C1/48AA: 2B PLD C1/48AB: 60 RTS C1/0CB6: C2 31 REP #$31 Flags register and direct page address C1/0CB8: 0B PHD C1/0CB9: 48 PHA C1/0CBA: 7B TDC C1/0CBB: 69 EE FF ADC #$FFEE C1/0CBE: 5B TCD C1/0CBF: 68 PLA C1/0CC0: A8 TAY C1/0CC1: 84 10 STY $10 Store the one and only parameter in Y and $10. C1/0CC3: AD 58 89 LDA $8958 C1/0CC6: C9 FF FF CMP #$FFFF End if no windows are open. C1/0CC9: D0 03 BNE $0CCE C1/0CCB: 4C 5E 0D JMP $0D5E C1/0CCE: AD 58 89 LDA $8958 C1/0CD1: 0A ASL C1/0CD2: AA TAX C1/0CD3: BD E4 88 LDA $88E4,X C1/0CD6: A0 52 00 LDY #$0052 C1/0CD9: 22 F7 8F C0 JSR $C08FF7 C1/0CDD: AA TAX C1/0CDE: BD 65 86 LDA $8665,X A = 0x15th byte in current window structure. C1/0CE1: A4 10 LDY $10 Restore Y from $10, transfer to X C1/0CE3: BB TYX C1/0CE4: 22 61 4E C4 JSR $C44E61 Jump to subroutine C44E61 C1/0CE8: AD 58 89 LDA $8958 Get most recent window, load from 7E88E4 table C1/0CEB: 0A ASL ...but this time compare against 7E88E2. If C1/0CEC: AA TAX equal, skip storing 0x1 at 7E9623. C1/0CED: BD E4 88 LDA $88E4,X C1/0CF0: CD E2 88 CMP $88E2 C1/0CF3: F0 07 BEQ $0CFC C1/0CF5: E2 20 SEP #$20 C1/0CF7: A9 01 LDA #$01 C1/0CF9: 8D 23 96 STA $9623 C1/0CFC: C2 20 REP #$20 C1/0CFE: AD 4F 96 LDA $964F A = 7E964F C1/0D01: C9 02 00 CMP #$0002 Compare against 02 C1/0D04: D0 05 BNE $0D0B Go to the 03 compare if not 02 C1/0D06: A2 01 00 LDX #$0001 If 02: X = 0x1, go to 0D23 C1/0D09: 80 18 BRA $0D23 C1/0D0B: AD 4F 96 LDA $964F C1/0D0E: C9 03 00 CMP #$0003 Compare against 03 if it wasn't 02 C1/0D11: D0 05 BNE $0D18 Go to 0D18 if not 03 C1/0D13: A2 00 00 LDX #$0000 If 03: X = 0x0, go to 0D23 C1/0D16: 80 0B BRA $0D23 C1/0D18: A2 00 00 LDX #$0000 Not 02 or 03: X = 0x0 C1/0D1B: AD 4D 96 LDA $964D Not 02 or 03: A = 7E964D C1/0D1E: D0 03 BNE $0D23 Not 02 or 03: Branch if zero flag clear (7E964D nonzero) C1/0D20: A2 01 00 LDX #$0001 Not 02 or 03: X = 0x1 C1/0D23: E0 00 00 CPX #$0000 If X is 0 (01, 03+ case) go to 0D43. C1/0D26: F0 1B BEQ $0D43 C1/0D28: AD 22 96 LDA $9622 If X is 1 (00, 02 case) then A = one byte from 7E9622. C1/0D2B: 29 FF 00 AND #$00FF C1/0D2E: D0 13 BNE $0D43 If 7E9622 is nonzero, skip ahead, otherwise continue. C1/0D30: A4 10 LDY $10 --- 7E9622 = 0x0 case --- C1/0D32: C0 20 00 CPY #$0020 If arg1 is 0x20 or 0x50, skip ahead. C1/0D35: F0 0C BEQ $0D43 C1/0D37: C0 50 00 CPY #$0050 C1/0D3A: F0 07 BEQ $0D43 C1/0D3C: A9 07 00 LDA #$0007 C1/0D3F: 22 E0 AB C0 JSR $C0ABE0 Else, load A with 0x7 and JSR to C0/ABE0. C1/0D43: AD 22 96 LDA $9622 --- Skip ahead point. --- C1/0D46: 29 FF 00 AND #$00FF C1/0D49: D0 13 BNE $0D5E If 7E9622 is nonzero, go to end C1/0D4B: AE 25 96 LDX $9625 If 7E9622 is zero, do this stuff. C1/0D4E: E8 INX C1/0D4F: 86 0E STX $0E C1/0D51: 80 09 BRA $0D5C C1/0D53: 22 D5 2D C1 JSR $C12DD5 C1/0D57: A6 0E LDX $0E C1/0D59: CA DEX C1/0D5A: 86 0E STX $0E C1/0D5C: D0 F5 BNE $0D53 C1/0D5E: 2B PLD C1/0D5F: 60 RTS