diff options
Diffstat (limited to 'disasm/unalf14.notes.txt')
| -rw-r--r-- | disasm/unalf14.notes.txt | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/disasm/unalf14.notes.txt b/disasm/unalf14.notes.txt new file mode 100644 index 0000000..92fd218 --- /dev/null +++ b/disasm/unalf14.notes.txt @@ -0,0 +1,248 @@ +uunalf was *not* written in C. no C compiler for the 6502 emits such +tight code, especially not the ones that were available in 1988. This +explains why it outperforms arc (which actually was in C) while having +a smaller executable size. + +unalf14.com is a standard Atari segmented executable. For disassembly +purposes, I converted it to a single chunk of raw object code: + +ataricom -n -m 1-2 unalf14.com unalf14.raw + +IOCB usage: + +#0 is E: as usual. +#1 is the input file(s). +#2 is K: (not sure if it's actually used). +#3 is the output file. + +When the program exits (print_msg_complete), it checks the byte at +$0700 (BOOTRG). If it's equal to $53 (ASCII S, for SpartaDOS), it +exits via an RTS. Otherwise it exits via JMP (DOSVEC), which reloads +the DOS menu on DOS 2 and compatibles. + +Bugs: + +ALF14.COM won't actually compress any files at all, when run from +the DOS on the disk image I keep finding in archives. The DOS is +"XDOS". Whatever I try to compress, I always end up with a 0-byte +output file. It works better in DOS 2.0S, but "*.TXT" doesn't catch +all the files it should, either. + +Trying to compress a file with the one-letter name D causes a an error +and the program exits. D:D works OK. + +Compressed files: +----------------------------------------------------------------------- +original data: +ff ff ff ff 00 ff ff ff ff 01 ff ff ff ff 02 +in binary: +00000000: 11111111 11111111 11111111 11111111 00000000 11111111 ...... +00000006: 11111111 11111111 11111111 00000001 11111111 11111111 ...... +0000000c: 11111111 11111111 00000010 + +compressed form: +10000000 00111111 11100000 01001111 11110000 00000100 00001101 11111110 00000001 10000011 00000000 10100000 00100000 + +----------------------------------------------------------------------- +orig in hex: + aa aa aa aa 00 aa aa aa aa 01 aa aa aa aa 02 + +orig in bin: + 0: 10101010 + 1: 10101010 + 2: 10101010 + 3: 10101010 + 4: 00000000 + 5: 10101010 + 6: 10101010 + 7: 10101010 + 8: 10101010 + 9: 00000001 +10: 10101010 +11: 10101010 +12: 10101010 +13: 10101010 +14: 00000010 + +compressed: + 10000000 00101010 10100000 01001010 10100000 00000100 00001101 01010100 00000001 10000011 00000000 10100000 00100000 +in groups of 9 bits: + 1 00000000 0 10101010 1 00000010 0 10101010 0 00000000 1 00000011 0 10101010 0 00000001 1 00000110 0 00000010 1 00000001 0 0000 + + 0: 1 00000000 ; 0 start + 1: 0 10101010 ; literal $aa + 2: 1 00000010 ; 2: $aa $aa + 3: 0 10101010 ; literal $aa + 4: 0 00000000 ; literal $00 + 5: 1 00000011 ; 3: $aa $aa $aa + 6: 0 10101010 ; literal $aa + 7: 0 00000001 ; literal $01 + 8: 1 00000110 ; 6: $aa $aa $aa $aa + 9: 0 00000010 ; literal $02 + 10: 1 00000001 ; 1 end + +----------------------------------------------------------------------- +orig (sam.txt): +00000000: 49 20 61 6d 20 53 61 6d 0a 0a 53 61 6d 20 49 20 I am Sam..Sam I +00000010: 61 6d 0a 0a 54 68 61 74 20 53 61 6d 2d 49 2d 61 am..That Sam-I-a +00000020: 6d 21 0a 54 68 61 74 20 53 61 6d 2d 49 2d 61 6d m!.That Sam-I-am +00000030: 21 0a 49 20 64 6f 20 6e 6f 74 20 6c 69 6b 65 0a !.I do not like. +00000040: 74 68 61 74 20 53 61 6d 2d 49 2d 61 6d 21 0a 0a that Sam-I-am!.. +00000050: 44 6f 20 79 6f 75 20 6c 69 6b 65 20 67 72 65 65 Do you like gree +00000060: 6e 20 65 67 67 73 20 61 6e 64 20 68 61 6d 3f 0a n eggs and ham?. +00000070: 0a 49 20 64 6f 20 6e 6f 74 20 6c 69 6b 65 20 74 .I do not like t +00000080: 68 65 6d 2c 20 53 61 6d 2d 49 2d 61 6d 2e 0a 49 hem, Sam-I-am..I +00000090: 20 64 6f 20 6e 6f 74 20 6c 69 6b 65 20 67 72 65 do not like gre +000000a0: 65 6e 20 65 67 67 73 20 61 6e 64 20 68 61 6d 2e en eggs and ham. +000000b0: 0a . + +Name Length Stowage SF Size now Date Time CRC +============ ======== ======== ==== ======== ========= ====== ==== +SAM.TXT 177 ALF 28% 128 8 Dec 82 12:24a 3690 + 0: 1 00000000 ; 0 start + 1: 0 01001001 ; literal $49 I + 2: 0 00100000 ; literal $20 + 3: 0 01100001 ; literal $61 a + 4: 0 01101101 ; literal $6d m + 5: 0 00100000 ; literal $20 + 6: 0 01010011 ; literal $53 S + 7: 1 00000100 ; 4 (?) + 8: 0 00001010 ; literal $0a + 9: 0 00001010 ; literal $0a + 10: 1 00000111 ; 7 (?) + 11: 1 00000101 ; 5 (?) + 12: 1 00000010 ; 2 (?) + 13: 1 00001000 ; 8 (?) + 14: 0 00001010 ; literal $0a + 15: 0 01010100 ; literal $54 T + 16: 0 01101000 ; literal $68 h + 17: 0 01100001 ; literal $61 a + 18: 0 01110100 ; literal $74 t + 19: 1 00000110 ; 6 (?) + 20: 1 00000100 ; 4 (?) + 21: 0 00101101 ; literal $2d - + 22: 0 01001001 ; literal $49 I + 23: 0 00101101 ; literal $2d - + 24: 1 00000100 ; 4 (?) + 25: 0 00100001 ; literal $21 ! + 26: 1 00001111 ; 15 (?) + 27: 1 00010001 ; 17 (?) + 28: 1 00010011 ; 19 (?) + 29: 1 00001011 ; 11 (?) + 30: 1 00010110 ; 22 (?) + 31: 1 00011000 ; 24 (?) + 32: 0 01101101 ; literal $6d m + 33: 1 00011010 ; 26 (?) + 34: 1 00000010 ; 2 (?) + 35: 0 01100100 ; literal $64 d + 36: 0 01101111 ; literal $6f o + 37: 0 00100000 ; literal $20 + 38: 0 01101110 ; literal $6e n + 39: 0 01101111 ; literal $6f o + 40: 1 00010011 ; 19 (?) + 41: 0 01101100 ; literal $6c l + 42: 0 01101001 ; literal $69 i + 43: 0 01101011 ; literal $6b k + 44: 0 01100101 ; literal $65 e + 45: 0 00001010 ; literal $0a + 46: 0 01110100 ; literal $74 t + 47: 1 00011100 ; 28 (?) + 48: 1 00010100 ; 20 (?) + 49: 0 01101101 ; literal $6d m + 50: 1 00011111 ; 31 (?) + 51: 1 00011001 ; 25 (?) + 52: 1 00001001 ; 9 (?) + 53: 0 01000100 ; literal $44 D + 54: 1 00100101 ; 37 (?) + 55: 0 01111001 ; literal $79 y + 56: 0 01101111 ; literal $6f o + 57: 0 01110101 ; literal $75 u + 58: 0 00100000 ; literal $20 + 59: 1 00101010 ; 42 (?) + 60: 1 00101100 ; 44 (?) + 61: 0 00100000 ; literal $20 + 62: 0 01100111 ; literal $67 g + 63: 0 01110010 ; literal $72 r + 64: 0 01100101 ; literal $65 e + 65: 0 01100101 ; literal $65 e + 66: 0 01101110 ; literal $6e n + 67: 0 00100000 ; literal $20 + 68: 0 01100101 ; literal $65 e + 69: 0 01100111 ; literal $67 g + 70: 0 01100111 ; literal $67 g + 71: 0 01110011 ; literal $73 s + 72: 1 00000011 ; 3 (?) + 73: 0 01101110 ; literal $6e n + 74: 0 01100100 ; literal $64 d + 75: 0 00100000 ; literal $20 + 76: 1 00010001 ; 17 (?) + 77: 0 01101101 ; literal $6d m + 78: 0 00111111 ; literal $3f ? + 79: 1 00001001 ; 9 (?) + 80: 1 00100011 ; 35 (?) + 81: 1 00100101 ; 37 (?) + 82: 1 00100111 ; 39 (?) + 83: 1 00101001 ; 41 (?) + 84: 1 00101011 ; 43 (?) + 85: 0 01100101 ; literal $65 e + 86: 0 00100000 ; literal $20 + 87: 1 00101111 ; 47 (?) + 88: 0 01100101 ; literal $65 e + 89: 0 01101101 ; literal $6d m + 90: 0 00101100 ; literal $2c , + 91: 1 00110001 ; 49 (?) + 92: 1 00110011 ; 51 (?) + 93: 0 01101101 ; literal $6d m + 94: 0 00101110 ; literal $2e . + 95: 0 00001010 ; literal $0a + 96: 1 01010001 ; 81 (?) + 97: 1 00100110 ; 38 (?) + 98: 1 00101000 ; 40 (?) + 99: 1 00111011 ; 59 (?) +100: 1 01010101 ; 85 (?) +101: 1 00111110 ; 62 (?) +102: 1 01000000 ; 64 (?) +103: 1 01000010 ; 66 (?) +104: 1 01000100 ; 68 (?) +105: 1 01000110 ; 70 (?) +106: 1 01001000 ; 72 (?) +107: 0 01100001 ; literal $61 a +108: 1 01001010 ; 74 (?) +109: 1 01001100 ; 76 (?) +110: 1 00000100 ; 4 (?) +111: 1 01011111 ; 95 (?) +112: 1 00000001 ; 1 end +junk: 0000000 + ==== ======== ==== ======== +Total 1 177 99% 128 + +----------------------------------------------------------------------- +orig: ABCDEFABBCCDDEEFABCABCDABCDEBCDBCDEBCDEF + + 0: 1 00000000 ; 0 start + 1: 0 01000001 ; literal $41 A + 2: 0 01000010 ; literal $42 B + 3: 0 01000011 ; literal $43 C + 4: 0 01000100 ; literal $44 D + 5: 0 01000101 ; literal $45 E + 6: 0 01000110 ; literal $46 F + 7: 1 00000010 ; 2 AB + 8: 1 00000011 ; 3 BC + 9: 1 00000100 ; 4 CD + 10: 1 00000101 ; 5 DE + 11: 1 00000110 ; 6 EF + 12: 1 00000010 ; 2 AB + 13: 0 01000011 ; literal $43 C + 14: 1 00001101 ; 13 ABC + 15: 0 01000100 ; literal $44 D + 16: 1 00001111 ; 15 ABCD + 17: 0 01000101 ; literal $45 E + 18: 1 00000011 ; 3 BC + 19: 0 01000100 ; literal $44 D + 20: 1 00010011 ; 19 BCD? + 21: 1 00010010 ; 18 EB? + 22: 1 00000100 ; 4 CD + 23: 1 00000110 ; 6 EF + 24: 1 00000001 ; 1 end +junk: 0000000 + |
