[1C 0F] - ? C1/7EED: 20 26 AD JSR $AD26 C1/AD26: C2 31 REP #$31 Flags and direct page manipulation. C1/AD28: 0B PHD C1/AD29: 7B TDC C1/AD2A: 69 F2 FF ADC #$FFF2 C1/AD2D: 5B TCD C1/AD2E: AD 12 9D LDA $9D12 $06+08 = 7E9D12+14 C1/AD31: 85 06 STA $06 C1/AD33: AD 14 9D LDA $9D14 C1/AD36: 85 08 STA $08 C1/AD38: A5 06 LDA $06 C1/AD3A: 85 14 STA $14 $14+16 = 7E9D12+14 ($06+08 on return) C1/AD3C: A5 08 LDA $08 C1/AD3E: 85 16 STA $16 C1/AD40: 2B PLD C1/AD41: 60 RTS C1/7EF0: A5 06 LDA $06 $06+08 = 7E9D12+14 C1/7EF2: 85 0E STA $0E $0E+10 = 7E9D12+14 C1/7EF4: A5 08 LDA $08 C1/7EF6: 85 10 STA $10 C1/7EF8: 20 F6 0D JSR $0DF6 C1/0DF6: C2 31 REP #$31 C1/0DF8: 0B PHD C1/0DF9: 7B TDC C1/0DFA: 69 E8 FF ADC #$FFE8 C1/0DFD: 5B TCD C1/0DFE: A5 26 LDA $26 C1/0E00: 85 0A STA $0A $0A+0C = 7E9D12+14 C1/0E02: A5 28 LDA $28 C1/0E04: 85 0C STA $0C C1/0E06: AD 58 89 LDA $8958 C1/0E09: C9 FF FF CMP #$FFFF C1/0E0C: D0 03 BNE $0E11 C1/0E0E: 4C B2 0E JMP $0EB2 If no windows are open, end. C1/0E11: A9 7F 96 LDA #$967F Else... C1/0E14: 85 06 STA $06 $06 = 0x967F C1/0E16: A9 FF FF LDA #$FFFF $08 = 0xFFFF C1/0E19: 85 08 STA $08 C1/0E1B: A5 06 LDA $06 C1/0E1D: C5 0A CMP $0A Compare 0x967F to 7E9D12 C1/0E1F: A5 08 LDA $08 0x967F-is-greater case: skip some code. C1/0E21: E5 0C SBC $0C 7E9D12-is-greater case: $0A/0C is replaced with 0x967F/0xFFFF C1/0E23: B0 08 BCS $0E2D C1/0E25: A5 06 LDA $06 C1/0E27: 85 0A STA $0A C1/0E29: A5 08 LDA $08 C1/0E2B: 85 0C STA $0C C1/0E2D: AD 58 89 LDA $8958 Get the root of the current window stats entry. C1/0E30: 0A ASL C1/0E31: AA TAX C1/0E32: BD E4 88 LDA $88E4,X C1/0E35: A0 52 00 LDY #$0052 C1/0E38: 22 F7 8F C0 JSR $C08FF7 C1/0E3C: 18 CLC C1/0E3D: 69 50 86 ADC #$8650 C1/0E40: 85 16 STA $16 Store the root in $16. C1/0E42: A5 0A LDA $0A $0A+0C -> $06+08 (9D12+14 or 0x967F/0xFFFF) C1/0E44: 85 06 STA $06 C1/0E46: A5 0C LDA $0C C1/0E48: 85 08 STA $08 C1/0E4A: A5 06 LDA $06 $06+08 -> $0E+10 (9D12+14 or 0x967F/0xFFFF) C1/0E4C: 85 0E STA $0E C1/0E4E: A5 08 LDA $08 C1/0E50: 85 10 STA $10 C1/0E52: 20 7C 0D JSR $0D7C C1/0D7C: C2 31 REP #$31 C1/0D7E: 0B PHD C1/0D7F: 7B TDC C1/0D80: 69 E8 FF ADC #$FFE8 C1/0D83: 5B TCD C1/0D84: A5 26 LDA $26 $06+08 = 9D12+14 or 0x967F/0xFFFF C1/0D86: 85 06 STA $06 $14+16 = 9D12+14 or 0x967F/0xFFFF C1/0D88: A5 28 LDA $28 C1/0D8A: 85 08 STA $08 C1/0D8C: A5 06 LDA $06 C1/0D8E: 85 14 STA $14 C1/0D90: A5 08 LDA $08 C1/0D92: 85 16 STA $16 C1/0D94: A2 60 89 LDX #$8960 X = 0x8960 C1/0D97: A9 01 00 LDA #$0001 C1/0D9A: 85 12 STA $12 A, $12 = 0x1 C1/0D9C: 80 2F BRA $0DCD Looks loopish... C1/0D9E: 22 37 92 C0 JSR $C09237 C1/0DA2: E2 20 SEP #$20 C1/0DA4: A5 06 LDA $06 C1/0DA6: 9D 00 00 STA $0000,X Store 0x00 at 7E8960 C1/0DA9: CA DEX X = 0x895F C1/0DAA: C2 20 REP #$20 C1/0DAC: A5 0E LDA $0E $0E+10 -> $0A+0C C1/0DAE: 85 0A STA $0A C1/0DB0: A5 10 LDA $10 C1/0DB2: 85 0C STA $0C C1/0DB4: A5 14 LDA $14 $14+16 -> $06+08 C1/0DB6: 85 06 STA $06 C1/0DB8: A5 16 LDA $16 C1/0DBA: 85 08 STA $08 C1/0DBC: 22 A6 91 C0 JSR $C091A6 $06 = $06 mod $0A. (9D12+14 or 0x967F/0xFFFF, mod ???) C1/0DC0: A5 06 LDA $06 $06+08 -> $14+16 C1/0DC2: 85 14 STA $14 C1/0DC4: A5 08 LDA $08 C1/0DC6: 85 16 STA $16 C1/0DC8: A5 12 LDA $12 C1/0DCA: 1A INC C1/0DCB: 85 12 STA $12 Increment $12 C1/0DCD: A9 0A 00 LDA #$000A $0A = 0x000A C1/0DD0: 85 0A STA $0A $0C = 0x0000 C1/0DD2: A9 00 00 LDA #$0000 C1/0DD5: 85 0C STA $0C C1/0DD7: A5 0A LDA $0A $0A+0C -> $0E+10 C1/0DD9: 85 0E STA $0E C1/0DDB: A5 0C LDA $0C C1/0DDD: 85 10 STA $10 C1/0DDF: A5 06 LDA $06 Load modulus result C1/0DE1: C5 0A CMP $0A Compare to 0xA C1/0DE3: A5 08 LDA $08 C1/0DE5: E5 0C SBC $0C C1/0DE7: B0 B5 BCS $0D9E Modulus result greater than 0xA? Loop. C1/0DE9: E2 20 SEP #$20 C1/0DEB: A5 06 LDA $06 C1/0DED: 9D 00 00 STA $0000,X C1/0DF0: C2 20 REP #$20 C1/0DF2: A5 12 LDA $12 C1/0DF4: 2B PLD C1/0DF5: 60 RTS Theory: Above writes digits of number "9D12+14 or 0x967F/0xFFFF"? with ones digit at $7E8960 and more significant digits to lower memory locations. The number of digits long the number written is gets stored in the accumulator. The below is written on that assumption. C1/0E55: AA TAX C1/0E56: 86 14 STX $14 C1/0E58: 86 02 STX $02 Number of digits put in X, $14, $02 C1/0E5A: A9 07 00 LDA #$0007 C1/0E5D: 38 SEC C1/0E5E: E5 02 SBC $02 C1/0E60: 18 CLC C1/0E61: 69 5A 89 ADC #$895A C1/0E64: A8 TAY Y, $12 = (7 - # of digits) + 0x895A = 0x8961 - # of digits C1/0E65: 84 12 STY $12 This value will be the address the most significant digit is written to C1/0E67: A5 16 LDA $16 C1/0E69: AA TAX Put the root address of the current window stats entry into X C1/0E6A: BD 12 00 LDA $0012,X C1/0E6D: 29 FF 00 AND #$00FF C1/0E70: 85 16 STA $16 Store byte 0x12 of the current windows stats entry in $16 C1/0E72: 29 80 00 AND #$0080 C1/0E75: D0 37 BNE $0EAE If byte 0x12 of the current window stats entry has the 0x80 bit set, skip to C1/0EAE C1/0E77: A5 16 LDA $16 C1/0E79: 29 0F 00 AND #$000F C1/0E7C: 1A INC Set accumulator to the lower nybble of byte 0x12 of the current windows stats entry C1/0E7D: A6 14 LDX $14 ... + 1 C1/0E7F: 86 02 STX $02 Set X, $02 to the number of digits in the number C1/0E81: C5 02 CMP $02 C1/0E83: B0 01 BCS $0E86 C1/0E85: 8A TXA If(the lower nybble of byte 0x12 of the current windows stats entry + 1 < # of digits in the number) A = # of digits in the number C1/0E86: 86 02 STX $02 ??? why is this here? C1/0E88: 38 SEC C1/0E89: E5 02 SBC $02 C1/0E8B: 85 04 STA $04 $04 = max(the lower nybble of byte 0x12 of the current windows stats entry + 1, # of digits in the number) - # of digits in the number C1/0E8D: 0A ASL C1/0E8E: 65 04 ADC $04 C1/0E90: 0A ASL A = $04 * 6; //Is this the X offset to draw at? C1/0E91: 22 95 3D C4 JSR $C43D95 //Unknown JSR, probably text drawing; starts by looking at Y offset text should be written to C1/0E95: 80 17 BRA $0EAE C1/0E97: A4 12 LDY $12 C1/0E99: B9 00 00 LDA $0000,Y C1/0E9C: 29 FF 00 AND #$00FF C1/0E9F: 18 CLC C1/0EA0: 69 60 00 ADC #$0060 C1/0EA3: C8 INY C1/0EA4: 84 12 STY $12 C1/0EA6: 20 B6 0C JSR $0CB6 C1/0EA9: A6 14 LDX $14 C1/0EAB: CA DEX C1/0EAC: 86 14 STX $14 C1/0EAE: A6 14 LDX $14 C1/0EB0: D0 E5 BNE $0E97 C1/0EB2: 2B PLD C1/0EB3: 60 RTS C1/7EFB: 80 0F BRA $7F0C C1/7F0C: A9 00 00 LDA #$0000 C1/7F0F: 2B PLD C1/7F10: 60 RTS