orig(ptr) = $0E+10 before the JSR C4/47FB: C2 31 REP #$31 C4/47FD: 0B PHD C4/47FE: 48 PHA C4/47FF: 7B TDC C4/4800: 69 E8 FF ADC #$FFE8 C4/4803: 5B TCD C4/4804: 68 PLA C4/4805: A8 TAY C4/4806: 84 16 STY $16 $16 = origA C4/4808: A5 26 LDA $26 C4/480A: 85 06 STA $06 C4/480C: A5 28 LDA $28 C4/480E: 85 08 STA $08 $06+08 = orig(ptr) C4/4810: AD 58 89 LDA $8958 C4/4813: 0A ASL C4/4814: AA TAX C4/4815: BD E4 88 LDA $88E4,X C4/4818: A0 52 00 LDY #$0052 C4/481B: 22 F7 8F C0 JSR $C08FF7 C4/481F: 18 CLC C4/4820: 69 50 86 ADC #$8650 C4/4823: AA TAX $14 = root of current window C4/4824: 86 14 STX $14 C4/4826: A5 06 LDA $06 C4/4828: 85 0E STA $0E C4/482A: A5 08 LDA $08 C4/482C: 85 10 STA $10 $0E+10 = $06+08 = orig(ptr) C4/482E: A4 16 LDY $16 C4/4830: 98 TYA A = origA C4/4831: 22 31 3E C4 JSR $C43E31 C4/3E31: C2 31 REP #$31 C4/3E33: 0B PHD C4/3E34: 48 PHA C4/3E35: 7B TDC C4/3E36: 69 EA FF ADC #$FFEA C4/3E39: 5B TCD C4/3E3A: 68 PLA C4/3E3B: A8 TAY C4/3E3C: 84 14 STY $14 $14 = origA C4/3E3E: A5 24 LDA $24 C4/3E40: 85 06 STA $06 C4/3E42: A5 26 LDA $26 C4/3E44: 85 08 STA $08 $06+08 = orig(ptr) C4/3E46: A2 00 00 LDX #$0000 C4/3E49: 86 12 STX $12 $12 = 0x0 C4/3E4B: AD 58 89 LDA $8958 C4/3E4E: 0A ASL C4/3E4F: AA TAX C4/3E50: BD E4 88 LDA $88E4,X C4/3E53: A0 52 00 LDY #$0052 C4/3E56: 22 F7 8F C0 JSR $C08FF7 C4/3E5A: 18 CLC C4/3E5B: 69 50 86 ADC #$8650 C4/3E5E: 85 02 STA $02 A, $02, $10 = root of current window C4/3E60: 85 10 STA $10 C4/3E62: 4C E5 3E JMP $3EE5 LOOP START C4/3E65: 88 DEY C4/3E66: 84 14 STY $14 Decrement $14 (holds origA) C4/3E68: 29 FF 00 AND #$00FF C4/3E6B: 38 SEC C4/3E6C: E9 50 00 SBC #$0050 C4/3E6F: 29 7F 00 AND #$007F C4/3E72: 85 0E STA $0E $0E = mathematically changed *orig(ptr) C4/3E74: E6 06 INC $06 Increment orig(ptr) C4/3E76: AD CE B4 LDA $B4CE C4/3E79: 29 FF 00 AND #$00FF C4/3E7C: F0 1A BEQ $3E98 C4/3E7E: AF 54 F0 C3 LDA $C3F054 --- 7EB4CE != 0x0 case --- C4/3E82: 85 0A STA $0A C4/3E84: AF 56 F0 C3 LDA $C3F056 C4/3E88: 85 0C STA $0C $0A+0C = $E10C7A = 0x210E7A C4/3E8A: A5 0E LDA $0E C4/3E8C: 18 CLC C4/3E8D: 65 0A ADC $0A C4/3E8F: 85 0A STA $0A C4/3E91: A7 0A LDA [$0A] Get a font width C4/3E93: 29 FF 00 AND #$00FF C4/3E96: 80 37 BRA $3ECF A = font width; jump to common code C4/3E98: A9 54 F0 LDA #$F054 --- 7EB4CE = 0x0 case --- C4/3E9B: 85 0A STA $0A C4/3E9D: A9 C3 00 LDA #$00C3 C4/3EA0: 85 0C STA $0C $0A+0C = 0xC3F054 C4/3EA2: A5 10 LDA $10 C4/3EA4: 85 02 STA $02 C4/3EA6: A6 02 LDX $02 C4/3EA8: BD 15 00 LDA $0015,X Get font of the current window. C4/3EAB: 85 04 STA $04 C4/3EAD: 0A ASL C4/3EAE: 65 04 ADC $04 C4/3EB0: 0A ASL C4/3EB1: 0A ASL C4/3EB2: 18 CLC C4/3EB3: 65 0A ADC $0A C4/3EB5: 85 0A STA $0A $0A+0C = 0xC3F054 + (12 * font number) C4/3EB7: A0 02 00 LDY #$0002 C4/3EBA: B7 0A LDA [$0A],Y C4/3EBC: A8 TAY C4/3EBD: A7 0A LDA [$0A] C4/3EBF: 85 0A STA $0A C4/3EC1: 84 0C STY $0C $0A+0C = Pointer to a set of font widths C4/3EC3: A5 0E LDA $0E C4/3EC5: 18 CLC C4/3EC6: 65 0A ADC $0A C4/3EC8: 85 0A STA $0A C4/3ECA: A7 0A LDA [$0A] C4/3ECC: 29 FF 00 AND #$00FF A = font width C4/3ECF: 85 02 STA $02 --- Common code --- C4/3ED1: AD 6D 5E LDA $5E6D Store the font width in $02, A = 7E5E6D C4/3ED4: 29 FF 00 AND #$00FF C4/3ED7: 18 CLC C4/3ED8: 65 02 ADC $02 C4/3EDA: 85 04 STA $04 $04 = Value at 7E5E6D + font width C4/3EDC: A6 12 LDX $12 C4/3EDE: 8A TXA C4/3EDF: 18 CLC C4/3EE0: 65 04 ADC $04 C4/3EE2: AA TAX C4/3EE3: 86 12 STX $12 $12 += Value at 7E5E6D + font width C4/3EE5: A7 06 LDA [$06] Loop exit condition - check *orig(ptr) and origA for 0x0. C4/3EE7: 29 FF 00 AND #$00FF C4/3EEA: F0 07 BEQ $3EF3 C4/3EEC: A4 14 LDY $14 C4/3EEE: F0 03 BEQ $3EF3 C4/3EF0: 4C 65 3E JMP $3E65 If neither are 0x0, loop. C4/3EF3: A6 12 LDX $12 C4/3EF5: 8A TXA A = Sum of the 7E5E6Ds and font widths. C4/3EF6: 2B PLD C4/3EF7: 6B RTL C4/4835: 85 12 STA $12 $12 = Sum of the 7E5E6Ds and font widths. C4/4837: AD 23 9E LDA $9E23 C4/483A: 29 07 00 AND #$0007 C4/483D: 85 04 STA $04 $04 = 7E9E23 mod 8 C4/483F: A6 14 LDX $14 X = root of current window C4/4841: BD 0E 00 LDA $000E,X A = X coord where text is being drawn in current window C4/4844: 3A DEC C4/4845: 0A ASL C4/4846: 0A ASL C4/4847: 0A ASL C4/4848: 18 CLC C4/4849: 65 04 ADC $04 C4/484B: 85 02 STA $02 $02 = 8(xcoord - 1) + 7E9E23 mod 8 C4/484D: A5 12 LDA $12 C4/484F: 18 CLC C4/4850: 65 02 ADC $02 C4/4852: 85 02 STA $02 $02 += Sum of the 7E5E6Ds and font widths C4/4854: BD 0A 00 LDA $000A,X C4/4857: 0A ASL C4/4858: 0A ASL C4/4859: 0A ASL C4/485A: C5 02 CMP $02 C4/485C: B0 0B BCS $4869 Check for enough space to write... whatever. C4/485E: 22 79 0C C1 JSR $C10C79 --- Less than/equal case --- C4/4862: E2 20 SEP #$20 C4/4864: A9 01 LDA #$01 C4/4866: 8D 75 5E STA $5E75 Do a newline and store 0x1 to 7E5E75 C4/4869: C2 20 REP #$20 --- Greater than case --- C4/486B: A5 06 LDA $06 C4/486D: 85 0E STA $0E C4/486F: A5 08 LDA $08 C4/4871: 85 10 STA $10 $0E+10 = $06+08 = orig(ptr) C4/4873: A4 16 LDY $16 C4/4875: 98 TYA A = origA C4/4876: 22 8C 0C C1 JSR $C10C8C C1/0C8C: C2 31 REP #$31 C1/0C8E: 0B PHD C1/0C8F: 48 PHA C1/0C90: 7B TDC C1/0C91: 69 EC FF ADC #$FFEC C1/0C94: 5B TCD C1/0C95: 68 PLA C1/0C96: 85 12 STA $12 $12 = origA C1/0C98: A5 22 LDA $22 C1/0C9A: 85 06 STA $06 C1/0C9C: A5 24 LDA $24 C1/0C9E: 85 08 STA $08 C1/0CA0: A5 06 LDA $06 C1/0CA2: 85 0E STA $0E C1/0CA4: A5 08 LDA $08 C1/0CA6: 85 10 STA $10 $06+08 = $0E+10 = orig(ptr) C1/0CA8: A5 12 LDA $12 A = origA C1/0CAA: 20 FC 0E JSR $0EFC ??? C1/0CAD: 2B PLD C1/0CAE: 6B RTL C4/487A: 2B PLD C4/487B: 6B RTL