Jump to content
IGNORED

Emulation problems


Kurt_Woloch

Recommended Posts

OK, thank you for that instruction. Are you planning to eventually improve speech support too? As of now the speech output of Classic99 still sounds garbled and full of drop-outs (just tested it with PARSEC).

 

Speech itself doesn't really need any work. What needs work in Classic99 is timing. The system was originally coded with completely free-running systems, and slowly, as PCs got faster, I've brought the timing in line. The last major overhaul put all timing against the CPU, which turned out to be a bad idea. The next one will be to centralize the timing on the VDP, which should allow me to lockstep the system much better (while also supporting raster effects). However, there's no ETA for that.

 

Depending on the speed of your system at the time it runs, speech doesn't necessarily drop out. But the nature of the beast is it's unreliable, and in fact my speech core is modified with a larger FIFO than normal to compensate for that.

 

Also, I've just looked into the source code you supply with Classic99, and it seems like you also use the TMS5220 coding table which at least for the "normal" TI-99 speech synthesizer should be the incorrect one.

 

Yes, it just uses the MESS core for speech. Back then, MESS didn't have any of the other speech chips available. I didn't write the speech core, it's really plugged in because people demand it. The table looks interesting, but it will be some weeks before I can look at it, since I'm in the middle of a big move. There's no guarantee I can do anything with the data (but it's very cool that you worked it out!)

Link to comment
Share on other sites

I built in a loop described below which repeats the speech, and on repeat, part of the speech becomes garbled. In Win994a, however, it's different... there, sometimes the speech gets output, and sometimes it doesn't. I can't say when it does and when it does not. I can't say how this one sounds on the real TI99 since my Speech Synthesizer is now broken.

 

Are you using the BEGIN RAW SPEECH and END RAW SPEECH commands? These have to be sent to the synth before your raw data.

 

The code for BEGIN is >60

 

E.g. To begin talking...

 

LI R0,>6000
MOVB R0,@>9400 ; begin talking using raw data

 

When you have sent all your data, you need to send a STOP command.

 

The code for STOP is >FF

 

LI R0,>FF00
MOVB R0,@>9400 ; stop talking

 

In addition, you need to make sure you are sending data too fast. On the REAL machine, this isn't a problem, as a full FIFO in the speech synth will halt the 9900. Your milage may vary with the various emulators however. MESS and Win994A handle it ok (Win994A as a direct result of my masochistic attempts to reproduce speech some time ago with it!).

 

Reproduced below is a complete test program that you can test on your rig. It should work perfectly on the real TI. You just need to assemble it. I also attach the actual source file. My advice, if you want to run this on the real deal is to assemble it using ASM994A (the assembler that comes with Win994a) as the source is written for that assembler. It won't assemble using TI's editor assembler without many formatting changes. This demo is available to see on YouTube: http://www.youtube.com/watch?v=LN4fYDrQXkc

 

If you want the original files, send me an email. I'd be interested to hear how this sounds with the new coding tables. EXCELLENT JOB with the coding tables!!! AWESOME! :-) :thumbsup:

 

Regards

 

Mark

 

;
; SPEECH DEMO FOR THE TI-99/4A
; MARK WILLS JUNE 2008
;
; Sound was sampled from a Pod-cast from www.retrobits.com
; Then converted to 8KHZ Mono, and processed with QBox.
; QBox was rediscovered after Ben Yates contacted the original
; designers of the 5220 TI Synth chip.
; QBOX will take WAV samples and convert them into LPC
; (Linear Predictive Coding)
; for replaying by the speech chip.
;
; The original 8KHZ source wav file is 428KB in size.
; The LPC equivalent of that is 4.65KB!
; 
; Enjoy

def SPEAK
ref vsbw

SPEAK	li r2,4764	; number of speech bytes to poke
li r3,speech	; speech data address
li r4,nar	; address of narration
clr r1		; clear r1 for VSBW utility
clr r0		; screen address
	
limi 0 		; no interrupts

loop1	movb *r4+,r1	; display narration on screen
jeq loop
blwp @vsbw
inc r0
jmp loop1
	
loop 	movb *r3+,@>9400; poke a byte of speech data
dec r2 		; finished speaking?
jeq quit 	; if so then end
jmp loop 	; else go 'round again

quit	limi 2 		; interrupts allowed
rt 		; return to editor/assembler environment

nar	text 'The machines were announced in  '
text 'December of 1978 and they       '
text 'actually began shipping in 1979.'
text 'The first time they were ever   '
text 'shown off was at the winter     '
text 'Consumer Electronics Show, or   '
text 'C.E.S, and that was in early    '
text 'January of 1979.'
byte 0
even
	
speech
BYTE >60
BYTE >04,>A8,>D1,>85,>00,>D5,>9B,>10,>A0,>06,>13,>02,>D4,>10
BYTE >4A,>80,>1A,>5C,>18,>D0,>42,>08,>03,>5A,>70,>65,>40,>8B
BYTE >AE,>0C,>68,>DE,>94,>00,>CD,>9B,>32,>A0,>79,>17,>02,>14
BYTE >A7,>46,>80,>6A,>CD,>08,>50,>B4,>29,>01,>92,>51,>25,>00
BYTE >30,>6A,>00,>C0,>00,>90,>2B,>4F,>EA,>AD,>65,>F4,>4A,>3C
BYTE >69,>70,>EA,>3E,>63,>79,>65,>DA,>6A,>65,>A4,>9D,>91,>2A
BYTE >2B,>13,>91,>76,>46,>EA,>0C,>AF,>57,>D8,>19,>A9,>D7,>BC
BYTE >91,>6E,>E5,>24,>DE,>6A,>47,>56,>A9,>93,>26,>29,>55,>99
BYTE >A5,>4F,>B0,>7A,>99,>28,>C6,>69,>C0,>AA,>21,>0D,>58,>D5
BYTE >B8,>01,>2B,>3B,>37,>60,>D5,>E0,>02,>AC,>14,>92,>00,>25
BYTE >A2,>4E,>1E,>99,>F4,>74,>4A,>5E,>99,>17,>B6,>ED,>A4,>74
BYTE >64,>5E,>E8,>95,>A3,>DA,>95,>29,>1D,>9B,>46,>AE,>47,>CE
BYTE >FD,>8C,>06,>BB,>1A,>05,>2D,>95,>E1,>E2,>B8,>95,>A8,>74
BYTE >5B,>AA,>E2,>52,>C1,>D2,>23,>45,>AE,>4B,>85,>6D,>D7,>84
BYTE >C8,>39,>D5,>31,>23,>A2,>26,>B9,>00,>11,>44,>17,>C0,>92
BYTE >CE,>53,>36,>E3,>A6,>A6,>B2,>5B,>9D,>B9,>8B,>A9,>38,>4E
BYTE >35,>6D,>AB,>AA,>5A,>27,>05,>EC,>A6,>1A,>C7,>D4,>12,>8A
BYTE >63,>C9,>D8,>AD,>4B,>A8,>1E,>47,>F0,>C6,>1A,>91,>DA,>EA
BYTE >8B,>55,>65,>C4,>7A,>51,>AD,>66,>C5,>11,>9B,>4E,>73,>16
BYTE >35,>57,>E2,>2A,>CD,>5A,>26,>5E,>A9,>AB,>54,>AF,>61,>7B
BYTE >64,>BA,>49,>BC,>BB,>E2,>95,>E5,>0E,>39,>B4,>95,>5B,>12
BYTE >0B,>CE,>49,>4F,>4E,>7E,>CA,>38,>6D,>33,>59,>B8,>21,>4B
BYTE >6F,>54,>17,>02,>64,>67,>49,>80,>6A,>A5,>C4,>51,>53,>47
BYTE >88,>25,>61,>7B,>2D,>E9,>2A,>E1,>86,>00,>29,>B0,>31,>20
BYTE >18,>EF,>04,>08,>6F,>79,>CA,>EC,>54,>CB,>57,>D2,>29,>93
BYTE >66,>B7,>5C,>06,>A3,>90,>DA,>A6,>BC,>50,>B5,>82,>1B,>DB
BYTE >CC,>44,>D9,>0A,>6E,>7D,>33,>0B,>E5,>CA,>9D,>91,>CC,>69
BYTE >59,>27,>2D,>9E,>CC,>76,>14,>9C,>A4,>05,>36,>D9,>92,>79
BYTE >E2,>A2,>35,>75,>4C,>CA,>09,>4B,>E2,>88,>76,>39,>27,>28
BYTE >5E,>43,>D7,>94,>9C,>30,>5B,>0F,>99,>94,>7A,>E2,>A8,>A3
BYTE >B9,>DC,>CE,>49,>43,>70,>0B,>B7,>38,>A7,>F4,>AE,>2D,>82
BYTE >92,>AC,>DA,>C5,>B2,>34,>9E,>BA,>5A,>1F,>DD,>5D,>2D,>E9
BYTE >E8,>5C,>D2,>30,>A9,>D8,>AD,>57,>A1,>34,>75,>C2,>84,>91
BYTE >C6,>F2,>D2,>72,>9C,>FA,>88,>3D,>2A,>3D,>36,>01,>18,>AD
BYTE >70,>C0,>60,>6E,>06,>E8,>D0,>D5,>01,>01,>78,>04,>20,>01
BYTE >F3,>00,>24,>90,>1A,>80,>08,>82,>05,>80,>41,>3A,>01,>32
BYTE >34,>31,>40,>A5,>4E,>C6,>9C,>E1,>D2,>59,>9D,>10,>6B,>D9
BYTE >31,>33,>8D,>0D,>C6,>2D,>82,>AA,>26,>49,>8F,>B2,>08,>CC
BYTE >DA,>20,>BD,>CA,>22,>31,>6B,>0A,>F2,>29,>9B,>C2,>8C,>69
BYTE >52,>A7,>6C,>86,>4C,>E7,>28,>9E,>32,>1B,>96,>E9,>A6,>74
BYTE >AA,>EC,>C8,>62,>86,>E2,>A8,>8D,>D5,>E8,>2A,>4A,>AD,>A2
BYTE >D1,>C7,>D3,>68,>A5,>9A,>44,>3B,>4F,>52,>14,>6A,>50,>63
BYTE >43,>15,>B5,>6B,>40,>AF,>4E,>31,>3A,>AB,>59,>3E,>4C,>55
BYTE >6D,>9D,>3A,>09,>B5,>C8,>AE,>79,>EA,>AC,>9D,>DD,>B7,>D2
BYTE >CA,>37,>75,>66,>B3,>54,>A7,>F9,>DE,>5C,>50,>3D,>9D,>F1
BYTE >A7,>70,>67,>F2,>1C,>80,>01,>C4,>03,>30,>01,>7B,>00,>02
BYTE >C8,>3C,>61,>34,>96,>E6,>2B,>F9,>C4,>59,>69,>6B,>B4,>95
BYTE >93,>44,>63,>65,>51,>56,>47,>62,>9C,>8E,>7B,>84,>49,>31
BYTE >F7,>7A,>69,>21,>39,>25,>DC,>59,>97,>3B,>65,>97,>30,>97
BYTE >E1,>EE,>96,>5B,>62,>8A,>69,>8E,>25,>1E,>A9,>9C,>D2,>6B
BYTE >11,>79,>65,>3E,>51,>BC,>6B,>E9,>55,>C4,>44,>F6,>AE,>33
BYTE >4F,>19,>23,>E5,>BB,>4D,>3C,>95,>8F,>5A,>17,>52,>69,>D5
BYTE >26,>C9,>8C,>59,>E4,>D2,>3B,>67,>9E,>11,>B1,>DD,>10,>8D
BYTE >B0,>B9,>C7,>4E,>5D,>32,>EA,>1E,>E6,>24,>35,>4A,>47,>56
BYTE >B8,>9D,>52,>73,>35,>55,>A9,>B6,>4E,>1E,>AC,>49,>E5,>4A
BYTE >3A,>65,>49,>2C,>91,>CB,>E0,>94,>25,>50,>58,>B7,>CC,>53
BYTE >55,>4F,>AE,>D3,>0A,>4E,>55,>1D,>46,>4C,>D3,>5C,>55,>F3
BYTE >E0,>35,>07,>A3,>D5,>C5,>40,>E4,>2C,>83,>D4,>37,>C5,>AC
BYTE >9E,>4E,>1C,>50,>24,>9B,>03,>0A,>43,>71,>40,>13,>A8,>06
BYTE >E0,>C2,>67,>95,>55,>62,>F5,>3B,>98,>51,>55,>05,>95,>AF
BYTE >B0,>5A,>E3,>94,>F6,>7A,>22,>4D,>2D,>0A,>B9,>26,>CE,>C9
BYTE >75,>20,>D7,>2A,>2B,>67,>03,>48,>61,>61,>80,>8C,>24,>1C
BYTE >50,>01,>A6,>03,>06,>10,>0B,>40,>00,>EE,>06,>A0,>3C,>FD
BYTE >E4,>D1,>6B,>58,>2F,>AD,>55,>79,>EB,>EB,>DE,>94,>46,>ED
BYTE >AD,>AD,>45,>49,>4E,>9D,>D3,>5A,>A9,>65,>B9,>B4,>51,>73
BYTE >7A,>58,>92,>D2,>48,>17,>13,>AE,>A6,>47,>6B,>75,>74,>A6
BYTE >05,>29,>1D,>B5,>D1,>AD,>26,>65,>74,>D1,>90,>76,>97,>E8
BYTE >D1,>27,>45,>5D,>17,>14,>DA,>50,>25,>74,>9F,>52,>68,>63
BYTE >15,>18,>D7,>0D,>B3,>8D,>4D,>41,>CC,>15,>AD,>36,>76,>03
BYTE >51,>37,>14,>DB,>D8,>34,>44,>CF,>48,>1A,>53,>77,>E8,>71
BYTE >6D,>71,>2C,>DD,>A1,>FB,>A6,>CD,>B5,>8E,>48,>26,>97,>B1
BYTE >46,>D0,>3D,>B9,>6F,>DA,>1E,>C1,>2C,>E4,>B2,>59,>7B,>0C
BYTE >A3,>B2,>F2,>74,>E3,>32,>CC,>E7,>8E,>D1,>49,>CA,>D0,>35
BYTE >46,>6C,>5B,>29,>C3,>1C,>A2,>58,>15,>87,>00,>63,>8A,>10
BYTE >20,>4B,>70,>02,>54,>A6,>14,>80,>44,>0C,>1D,>40,>88,>93
BYTE >02,>A4,>30,>12,>00,>50,>AE,>0C,>00,>C6,>93,>00,>40,>BB
BYTE >03,>00,>00,>10,>A0,>39,>4B,>02,>64,>AF,>41,>80,>A8,>D4
BYTE >09,>10,>95,>06,>01,>8A,>C6,>24,>40,>4B,>12,>04,>48,>86
BYTE >9C,>00,>51,>4B,>12,>20,>28,>4E,>02,>24,>A1,>4E,>80,>C2
BYTE >D4,>08,>90,>B5,>16,>01,>B2,>96,>32,>EB,>48,>16,>91,>26
BYTE >4B,>B5,>23,>7B,>6A,>86,>6C,>02,>64,>A5,>49,>80,>EA,>38
BYTE >08,>50,>0C,>27,>01,>82,>B5,>22,>80,>71,>DE,>04,>B0,>52
BYTE >8B,>00,>A3,>1A,>33,>60,>65,>65,>02,>0C,>87,>44,>80,>1A
BYTE >49,>09,>10,>24,>29,>00,>80,>01,>B2,>A2,>3A,>65,>B5,>5C
BYTE >9E,>43,>E3,>14,>CD,>50,>BB,>8F,>82,>55,>26,>C5,>4D,>13
BYTE >B6,>4A,>C9,>9C,>AF,>47,>D0,>2C,>25,>F5,>39,>E9,>41,>FB
BYTE >14,>D1,>4A,>44,>2D,>C3,>53,>D4,>44,>66,>3D,>0A,>4E,>D9
BYTE >0A,>7A,>4C,>CB,>38,>65,>8B,>E8,>B1,>2D,>E3,>94,>3D,>90
BYTE >DB,>85,>C1,>53,>F4,>48,>E1,>E7,>81,>4E,>D1,>02,>B7,>4D
BYTE >4A,>3C,>59,>09,>32,>3E,>2A,>EB,>24,>C5,>E9,>E8,>B8,>E4
BYTE >13,>E5,>A4,>1D,>95,>B4,>4F,>58,>02,>57,>64,>C9,>1A,>7E
BYTE >0D,>22,>2E,>25,>DB,>01,>DD,>89,>14,>60,>24,>E7,>02,>CC
BYTE >94,>92,>80,>55,>26,>0A,>30,>4B,>DB,>32,>77,>9E,>AE,>24
BYTE >45,>C7,>8C,>CA,>CB,>AC,>22,>1F,>3B,>B8,>28,>89,>C8,>B8
BYTE >5C,>17,>26,>D1,>C7,>D6,>72,>BD,>9B,>A4,>4A,>87,>C7,>0B
BYTE >6A,>52,>7A,>14,>1E,>3F,>31,>EF,>E8,>A1,>79,>C2,>24,>24
BYTE >63,>C7,>52,>4A,>B5,>F4,>CC,>08,>D9,>26,>65,>D2,>AB,>2A
BYTE >24,>9B,>94,>0B,>8B,>AE,>90,>35,>D2,>24,>A8,>AA,>3A,>D6
BYTE >C9,>AA,>44,>EF,>1D,>89,>2D,>6F,>1A,>BC,>6E,>64,>84,>B2
BYTE >6B,>F0,>98,>B2,>25,>8A,>CC,>21,>27,>CB,>D1,>C8,>76,>8D
BYTE >62,>D7,>D0,>2B,>ED,>1A,>CD,>B7,>6C,>9D,>AC,>59,>F4,>BA
BYTE >91,>70,>F2,>9E,>D0,>74,>47,>C6,>29,>7A,>62,>E3,>6D,>19
BYTE >A7,>E8,>81,>82,>2F,>2C,>9E,>A2,>3B,>4C,>D9,>B0,>70,>CA
BYTE >E6,>B0,>78,>4B,>C1,>28,>93,>A4,>89,>58,>1A,>AD,>F2,>5C
BYTE >27,>47,>4D,>9F,>76,>45,>36,>31,>B3,>9C,>80,>1D,>4C,>0B
BYTE >B0,>62,>72,>01,>66,>6D,>6B,>C0,>AC,>6D,>05,>58,>6D,>A2
BYTE >01,>B3,>B5,>17,>60,>D5,>94,>04,>38,>6E,>75,>82,>AC,>D9
BYTE >63,>5B,>D6,>09,>92,>E5,>8C,>0B,>8B,>27,>08,>26,>2A,>32
BYTE >ED,>84,>B0,>5A,>16,>D5,>50,>62,>82,>69,>5D,>35,>BC,>B5
BYTE >0A,>7A,>74,>B1,>C8,>C4,>21,>9A,>3E,>DD,>44,>15,>8F,>24
BYTE >6B,>31,>AF,>B2,>7C,>F2,>66,>28,>EC,>CA,>E2,>E9,>9B,>25
BYTE >F7,>19,>51,>6B,>69,>96,>DC,>D7,>A5,>B6,>BD,>48,>2A,>1B
BYTE >51,>52,>D6,>28,>64,>B5,>D9,>51,>5B,>93,>94,>B1,>D0,>24
BYTE >65,>4D,>92,>57,>9A,>13,>B9,>55,>5B,>5F,>6A,>09,>ED,>56
BYTE >63,>7D,>68,>B8,>41,>98,>83,>D4,>95,>91,>84,>6E,>88,>5C
BYTE >46,>86,>13,>B9,>2E,>4A,>49,>1E,>AD,>61,>9A,>24,>D5,>A1
BYTE >AC,>A1,>1A,>9A,>B1,>84,>E0,>D4,>CC,>6D,>D6,>02,>5D,>1C
BYTE >31,>B7,>8E,>74,>76,>73,>44,>00,>AF,>39,>00,>00,>5C,>31
BYTE >22,>B2,>4D,>89,>1A,>45,>D3,>10,>79,>49,>71,>95,>D5,>42
BYTE >D6,>B9,>A8,>53,>36,>8D,>A1,>1F,>94,>56,>9D,>35,>85,>7D
BYTE >D0,>2C,>35,>73,>36,>D1,>06,>3B,>D5,>CC,>D9,>5A,>0B,>8B
BYTE >52,>73,>AB,>E3,>E3,>2C,>4A,>C3,>BC,>8E,>4F,>30,>28,>0D
BYTE >0D,>D6,>6D,>45,>EB,>D4,>D1,>73,>7A,>15,>C3,>53,>E7,>C0
BYTE >61,>D9,>B4,>4E,>53,>1C,>A7,>56,>D1,>3E,>75,>0D,>E4,>3A
BYTE >25,>F9,>D4,>D5,>61,>54,>B7,>A8,>55,>57,>03,>3D,>9D,>24
BYTE >57,>D3,>2C,>A4,>5F,>53,>48,>4D,>D5,>18,>DE,>C3,>80,>00
BYTE >5E,>98,>07,>20,>73,>C2,>00,>14,>8A,>E2,>80,>46,>D1,>0D
BYTE >20,>98,>EF,>28,>B3,>C0,>DA,>0D,>28,>AB,>AA,>0A,>B2,>37
BYTE >21,>8F,>3A,>4A,>EA,>2D,>47,>5C,>1A,>1C,>62,>52,>4C,>55
BYTE >68,>61,>CA,>15,>17,>8D,>A1,>83,>B9,>BA,>54,>E4,>38,>C0
BYTE >72,>75,>07,>78,>60,>19,>80,>02,>D8,>13,>50,>00,>7B,>02
BYTE >0A,>60,>0F,>40,>02,>EC,>0E,>80,>69,>E3,>94,>C1,>7A,>66
BYTE >1C,>E5,>53,>9A,>50,>39,>16,>92,>47,>6D,>7C,>66,>59,>99
BYTE >0A,>BD,>91,>11,>9E,>11,>A9,>B4,>41,>4B,>7B,>B8,>ED,>D1
BYTE >78,>E9,>D5,>96,>45,>5A,>2B,>82,>67,>87,>0A,>29,>0D,>F6
BYTE >39,>6E,>C6,>68,>B4,>46,>DB,>64,>3A,>E4,>D1,>25,>C1,>D3
BYTE >63,>50,>46,>9F,>05,>4D,>8F,>C1,>1E,>43,>16,>D4,>75,>06
BYTE >AB,>8D,>49,>51,>4D,>17,>A2,>34,>72,>67,>13,>A9,>0C,>CB
BYTE >C8,>AD,>4F,>68,>32,>6E,>A3,>D1,>3A,>61,>61,>6B,>0D,>39
BYTE >B0,>69,>8E,>A5,>33,>E6,>A4,>A6,>95,>B4,>D7,>98,>83,>87
BYTE >64,>D2,>5A,>53,>F6,>99,>9C,>29,>7B,>2D,>C9,>87,>5B,>86
BYTE >E2,>B1,>25,>1F,>CE,>15,>8E,>5A,>99,>A3,>BB,>54,>28,>1A
BYTE >65,>09,>16,>5C,>69,>DB,>01,>51,>4B,>29,>A0,>18,>72,>05
BYTE >D4,>88,>66,>80,>A4,>B1,>08,>C0,>9D,>0E,>01,>70,>F2,>55
BYTE >65,>76,>14,>6E,>AB,>D9,>14,>35,>50,>52,>A6,>4F,>02,>44
BYTE >43,>4E,>00,>A1,>38,>08,>00,>BC,>05,>00,>01,>AC,>F5,>22
BYTE >00,>35,>1E,>04,>08,>56,>94,>00,>25,>88,>10,>A0,>04,>33
BYTE >02,>D4,>68,>4A,>80,>1A,>5C,>09,>D0,>BC,>29,>03,>AA,>37
BYTE >13,>40,>F5,>26,>02,>A8,>D6,>54,>00,>CD,>87,>0A,>A0,>85
BYTE >30,>05,>34,>E7,>A6,>80,>E6,>42,>05,>D0,>BC,>9B,>00,>5A
BYTE >08,>23,>40,>73,>E6,>04,>88,>C6,>8C,>00,>D4,>6A,>10,>00
BYTE >08,>35,>93,>0E,>9F,>EE,>12,>8E,>9B,>EF,>9D,>59,>E6,>58
BYTE >5A,>A5,>F3,>16,>51,>1D,>7A,>C5,>85,>B3,>7B,>84,>E5,>E2
BYTE >4E,>E7,>A2,>A6,>B6,>05,>10,>98,>88,>03,>8A,>52,>09,>00
BYTE >69,>16,>C7,>9B,>D2,>2D,>CC,>9D,>1C,>77,>9A,>D0,>70,>B7
BYTE >7D,>9C,>69,>C3,>22,>DC,>F6,>31,>A7,>34,>F1,>88,>24,>C7
BYTE >8C,>32,>C5,>3B,>63,>17,>60,>00,>93,>04,>5C,>A0,>9C,>80
BYTE >06,>D8,>1C,>30,>80,>99,>02,>2A,>54,>0E,>40,>E0,>2A,>C7
BYTE >EC,>46,>C4,>20,>13,>1D,>B3,>58,>4B,>89,>91,>7C,>EC,>E2
BYTE >2D,>68,>8A,>F2,>71,>72,>34,>E7,>69,>2A,>C7,>4D,>49,>CD
BYTE >6A,>E8,>0C,>57,>59,>6F,>A9,>94,>39,>3C,>65,>7C,>34,>83
BYTE >41,>F3,>B8,>CB,>91,>56,>05,>C3,>17,>BA,>3B,>D4,>4C,>AF
BYTE >20,>48,>1B,>9D,>A2,>78,>C2,>28,>6D,>AA,>4A,>D4,>89,>BD
BYTE >F1,>ED,>08,>33,>2B,>91,>2D,>2B,>2D,>47,>B7,>84,>AF,>30
BYTE >B7,>AC,>55,>12,>7E,>D5,>5C,>2A,>55,>49,>C4,>63,>2F,>AB
BYTE >54,>2D,>51,>87,>E2,>2D,>63,>AF,>44,>0D,>8D,>33,>AB,>7D
BYTE >D2,>90,>A8,>3E,>24,>F6,>49,>63,>A2,>5E,>8B,>9A,>27,>8D
BYTE >91,>73,>22,>12,>9E,>D4,>47,>ED,>4A,>75,>3C,>52,>9F,>CC
BYTE >A3,>22,>49,>89,>BA,>31,>16,>15,>25,>C3,>1B,>29,>33,>CC
BYTE >64,>37,>33,>06,>63,>8B,>88,>3B,>82,>D4,>A1,>43,>7A,>F4
BYTE >0A,>72,>87,>6C,>8D,>C9,>2B,>CA,>0D,>B2,>2C,>6B,>9F,>B8
BYTE >06,>15,>B6,>4C,>92,>80,>1E,>85,>0B,>30,>7A,>78,>03,>C6
BYTE >6A,>6F,>C0,>D8,>1D,>0D,>98,>B3,>A3,>00,>73,>4D,>14,>60
BYTE >D4,>D4,>04,>28,>EB,>75,>A2,>68,>3D,>A2,>BA,>D4,>89,>83
BYTE >C9,>F4,>A8,>32,>27,>F1,>B6,>52,>BC,>A2,>9C,>C4,>BA,>75
BYTE >2E,>6B,>B2,>12,>D9,>2B,>CC,>B4,>C9,>4A,>54,>EA,>F0,>90
BYTE >3A,>2B,>B1,>3A,>5B,>9B,>6B,>8F,>44,>9A,>AC,>28,>55,>79
BYTE >92,>A0,>2A,>64,>22,>F6,>C9,>A3,>2A,>A7,>2A,>AB,>A7,>88
BYTE >A6,>92,>A2,>C2,>9C,>32,>AA,>6A,>F6,>30,>7B,>EA,>24,>6B
BYTE >58,>C2,>DC,>AA,>83,>ED,>24,>0F,>B3,>AB,>09,>7E,>92,>25
BYTE >AC,>AC,>2E,>94,>0A,>4E,>97,>B4,>FA,>58,>32,>A8,>4A,>CA
BYTE >1A,>62,>AA,>A2,>4E,>C9,>6B,>88,>25,>42,>AA,>C4,>9C,>21
BYTE >F9,>68,>F2,>31,>E5,>00,>9A,>34,>02,>00,>4C,>87,>01,>A0
BYTE >CC,>50,>00,>E1,>EA,>0A,>C8,>52,>C4,>00,>81,>B1,>1A,>20
BYTE >73,>31,>03,>44,>6E,>A2,>00,>21,>DC,>08,>00,>C2,>84,>CA
BYTE >94,>EF,>0C,>D3,>74,>CC,>E5,>79,>32,>DC,>EC,>12,>3F,>29
BYTE >8B,>88,>B4,>23,>C2,>C8,>23,>A2,>23,>09,>CB,>82,>B0,>8A
BYTE >74,>D6,>AE,>22,>2F,>42,>D9,>1C,>A5,>9A,>6D,>4F,>23,>4F
BYTE >54,>2A,>36,>3A,>D0,>3A,>C9,>A8,>54,>AC,>51,>CA,>2A,>A7
BYTE >0A,>2A,>BB,>CD,>C6,>9C,>3A,>3A,>2F,>8D,>29,>75,>EA,>68
BYTE >23,>23,>BB,>F0,>69,>A2,>B3,>88,>1E,>43,>A7,>89,>4E,>33
BYTE >BA,>4D,>9E,>26,>38,>B5,>9C,>91,>78,>9A,>A0,>AC,>AC,>4F
BYTE >D4,>68,>AC,>89,>CA,>5C,>81,>A3,>0B,>AC,>BC,>BC,>2B,>AE
BYTE >6E,>E1,>50,>31,>6D,>1D,>80,>04,>D4,>03,>10,>81,>86,>01
BYTE >0A,>48,>55,>00,>AF,>59,>0E,>C8,>36,>68,>94,>C5,>68,>58
BYTE >AD,>AD,>53,>14,>2F,>E6,>5D,>36,>4F,>99,>13,>BB,>4F,>C9
BYTE >3C,>55,>8A,>E2,>1D,>2B,>E3,>54,>39,>70,>49,>AC,>0B,>05
BYTE >C0,>68,>4D,>00,>6B,>29,>08,>10,>1C,>85,>00,>AA,>52,>3F
BYTE >45,>16,>5A,>69,>13,>F9,>54,>5E,>75,>B7,>A9,>D5,>D6,>F0
BYTE >B8,>65,>6C,>71,>5D,>23,>4C,>77,>84,>48,>26,>00,>68,>D9
BYTE >04,>00,>CF,>23,>95,>6C,>44,>89,>4B,>C2,>56,>88,>56,>61
BYTE >2C,>E9,>4E,>66,>5D,>79,>9A,>55,>3D,>69,>72,>9C,>1E,>13
BYTE >F5,>24,>C9,>51,>E9,>8E,>A3,>96,>06,>CD,>1B,>15,>A6,>52
BYTE >1A,>39,>65,>B6,>46,>4A,>C0,>F0,>A8,>05,>68,>92,>39,>00
BYTE >45,>30,>3B,>C0,>3A,>B6,>11,>FA,>CC,>B1,>69,>91,>47,>E2
BYTE >33,>C5,>87,>25,>5A,>A9,>2B,>1C,>1F,>5A,>7B,>64,>21,>63
BYTE >BD,>46,>ED,>91,>BB,>42,>FE,>66,>71,>4A,>11,>32,>C9,>4B
BYTE >4C,>36,>69,>4A,>42,>29,>61,>87,>99,>25,>95,>9A,>68,>6A
BYTE >03,>94,>61,>EA,>80,>1C,>84,>1D,>20,>34,>EB,>49,>AA,>55
BYTE >76,>ED,>DA,>AB,>70,>D6,>B2,>7C,>44,>97,>8A,>5B,>AF,>91
BYTE >41,>95,>2A,>2D,>E5,>C2,>03,>53,>6B,>32,>15,>EB,>4C,>DB
BYTE >06,>98,>58,>39,>00,>1D,>A8,>07,>60,>01,>B3,>00,>5C,>A0
BYTE >91,>80,>09,>44,>97,>9F,>B1,>5B,>56,>CC,>3A,>81,>57,>5E
BYTE >ED,>33,>79,>05,>5E,>6B,>87,>4D,>98,>12,>28,>27,>B3,>E2
BYTE >56,>52,>E8,>2D,>5E,>7B,>91,>2E,>91,>77,>B8,>6B,>4D,>A9
BYTE >C4,>32,>69,>2D,>B9,>B9,>91,>E8,>A1,>7A,>AA,>A3,>47,>62
BYTE >AA,>E9,>1B,>4D,>5E,>99,>2D,>2E,>57,>14,>EB,>E4,>3E,>99
BYTE >5F,>49,>A4,>53,>84,>28,>DB,>E2,>B1,>4F,>E9,>63,>4C,>48
BYTE >C4,>3E,>A5,>F7,>D5,>49,>11,>79,>95,>3A,>4C,>06,>57,>9C
BYTE >56,>2A,>BF,>E5,>38,>65,>47,>61,>4D,>4F,>60,>46,>39,>65
BYTE >70,>DD,>6E,>6D,>FA,>54,>D1,>7B,>A6,>77,>E8,>53,>17,>C3
BYTE >9D,>51,>91,>56,>D2,>0B,>73,>A8,>CF,>71,>40,>D6,>2A,>02
BYTE >88,>52,>95,>00,>C5,>48,>06,>A0,>87,>C8,>02,>54,>EF,>92
BYTE >80,>68,>85,>1D,>10,>8C,>E8,>48,>42,>13,>EB,>90,>DA,>27
BYTE >4B,>5E,>27,>C4,>A2,>9C,>3C,>5B,>EB,>10,>8F,>72,>F2,>AA
BYTE >65,>34,>5C,>CA,>29,>AA,>95,>E2,>0E,>4B,>A7,>A8,>86,>1B
BYTE >C7,>5D,>AC,>22,>48,>A9,>B2,>56,>74,>CA,>E2,>39,>24,>56
BYTE >C5,>A9,>5A,>A0,>A4,>2D,>07,>AB,>6E,>11,>4A,>3F,>6D,>94
BYTE >BA,>18,>CC,>8C,>95,>65,>EA,>16,>C9,>48,>CB,>B5,>02,>6A
BYTE >64,>0B,>40,>F3,>A6,>09,>98,>A9,>A3,>00,>B3,>94,>37,>60
BYTE >D4,>90,>06,>8C,>96,>D2,>80,>99,>95,>0A,>30,>A2,>F0,>C9
BYTE >9B,>64,>8D,>8C,>56,>A7,>8E,>46,>2B,>6B,>2C,>9D,>3A,>5A
BYTE >EB,>AA,>10,>73,>BA,>E8,>3C,>CB,>33,>F2,>E9,>43,>88,>48
BYTE >CB,>CA,>AB,>0F,>29,>C3,>3D,>4A,>AF,>DE,>E7,>0C,>8D,>AC
BYTE >3C,>7A,>1F,>B2,>44,>6B,>D0,>E8,>BD,>AF,>12,>F1,>51,>65
BYTE >30,>29,>1B,>B5,>8B,>94,>DE,>C4,>6A,>E6,>1C,>5D,>06,>53
BYTE >3B,>49,>F3,>70,>EA,>75,>AB,>24,>ED,>23,>A1,>56,>AD,>12
BYTE >AD,>87,>B8,>5A,>EF,>32,>EC,>9E,>EA,>7A,>99,>7B,>50,>6A
BYTE >8C,>1B,>D4,>1C,>23,>CF,>C9,>A9,>55,>37,>85,>BD,>26,>A7
BYTE >56,>BE,>60,>8B,>9C,>5C,>3A,>B5,>DD,>9D,>72,>52,>E9,>D4
BYTE >33,>CA,>F0,>5A,>A5,>D3,>C7,>78,>D4,>27,>B7,>CE,>74,>97
BYTE >53,>59,>D8,>3A,>DF,>54,>5E,>64,>74,>EB,>42,>23,>7D,>D3
BYTE >19,>A3,>8F,>95,>E4,>D2,>52,>B5,>3E,>14,>F2,>1D,>71,>93
BYTE >FA,>D4,>C1,>72,>2C,>A9,>AB,>0B,>97,>60,>8D,>A4,>2C,>29
BYTE >A1,>9D,>D1,>12,>13,>B3,>E4,>72,>51,>75,>4C,>80,>18,>45
BYTE >01,>18,>A0,>A2,>37,>01,>BC,>F4,>06,>06,>98,>2C,>21,>00
BYTE >13,>CC,>0C,>60,>E4,>68,>00,>2A,>B0,>70,>C0,>04,>6A,>0E
BYTE >D8,>40,>CD,>01,>87,>A8,>3A,>60,>63,>31,>07,>3C,>2C,>E6
BYTE >80,>05,>4D,>03,>D0,>80,>DB,>88,>26,>71,>16,>CF,>C4,>2B
BYTE >29,>0A,>B5,>EA,>6D,>AD,>B4,>59,>B0,>EE,>53,>B1,>B2,>22
BYTE >D1,>6F,>BA,>E6,>C8,>32,>A5,>98,>AF,>84,>23,>2B,>1C,>63
BYTE >AF,>6C,>B5,>6C,>38,>E0,>FC,>8A,>15,>CA,>E1,>20,>F6,>42
BYTE >72,>AA,>67,>02,>89,>6F,>C7,>A5,>E8,>0A,>72,>CF,>65,>B7
BYTE >32,>13,>CA,>DB,>94,>35,>CA,>C6,>21,>E6,>42,>D2,>28,>2B
BYTE >43,>DF,>73,>D1,>AB,>AC,>1C,>63,>37,>65,>AD,>B2,>0A,>F4
BYTE >BD,>92,>34,>CA,>AE,>21,>E7,>9D,>71,>8B,>67,>42,>D5,>2F
BYTE >C7,>AE,>6B,>1A,>BB,>BE,>22,>AA,>6E,>78,>72,>FD,>5A,>40
BYTE >80,>51,>35,>1C,>10,>AD,>CC,>39,>AA,>E5,>F2,>CD,>C8,>A7
BYTE >CE,>46,>27,>C6,>2D,>9D,>3A,>07,>A9,>98,>30,>7D,>DA,>E4
BYTE >BD,>7D,>34,>CC,>E9,>9B,>D7,>92,>F1,>D0,>67,>6B,>39,>9A
BYTE >3B,>E3,>9C,>A5,>E6,>28,>EA,>76,>74,>CE,>16,>AC,>39,>27
BYTE >B5,>02,>78,>B0,>54,>00,>36,>A6,>0E,>80,>74,>22,>00,>16
BYTE >64,>05,>A0,>00,>C9,>00,>14,>60,>E1,>80,>0A,>38,>1D,>30
BYTE >80,>98,>03,>3A,>10,>33,>C0,>C6,>1C,>0E,>98,>80,>DC,>00
BYTE >1B,>B0,>0B,>A0,>81,>54,>02,>24,>9D,>40,>00,>A3,>94,>08
BYTE >50,>B3,>08,>01,>5A,>09,>65,>40,>8B,>A6,>0C,>28,>46,>AC
BYTE >D4,>23,>57,>2A,>7B,>92,>54,>8F,>3A,>1D,>14,>4E,>18,>D0
BYTE >BD,>1A,>03,>5A,>54,>65,>40,>B3,>62,>0C,>E8,>41,>8D,>01
BYTE >2D,>AA,>31,>60,>14,>33,>06,>8C,>68,>CE,>80,>1E,>D5,>09
BYTE >D0,>A3,>3A,>01,>7A,>32,>23,>40,>CF,>EE,>04,>68,>4E,>9C
BYTE >00,>C5,>4B,>10,>80,>4A,>0D,>20,>40,>F3,>1A,>0A,>10,>5E
BYTE >F3,>14,>2D,>5A,>62,>94,>CD,>53,>54,>2B,>09,>9D,>36,>57
BYTE >19,>94,>B4,>C6,>30,>1C,>85,>B4,>11,>11,>C3,>70,>E5,>D6
BYTE >7A,>78,>2D,>C2,>93,>65,>A5,>A9,>71,>30,>4F,>56,>A4,>56
BYTE >78,>33,>38,>59,>D5,>1A,>EA,>23,>F3,>24,>CD,>5B,>62,>B5
BYTE >AD,>93,>D4,>64,>A1,>31,>91,>4F,>52,>AC,>8E,>64,>DB,>6E
BYTE >69,>08,>59,>A6,>19,>2F,>A5,>26,>66,>69,>98,>B4,>94,>F0
BYTE >5E,>21,>66,>4E,>4B,>26,>4E,>2A,>56,>26,>59,>99,>F2,>3D
BYTE >A2,>5D,>E5,>64,>CE,>C4,>B8,>4D,>99,>93,>7B,>13,>91,>39
BYTE >55,>4E,>1E,>A4,>65,>C5,>46,>39,>45,>54,>16,>99,>17,>EB
BYTE >94,>51,>A9,>7B,>5E,>E4,>51,>06,>DE,>92,>B5,>25,>47,>15
BYTE >69,>49,>E4,>54,>1A,>75,>07,>EE,>9A,>9D,>68,>34,>57,>88
BYTE >09,>77,>EA,>D5,>7F,>97,>E1,>68,>4A,>86,>B7,>65,>39,>71
BYTE >68,>0E,>5E,>36,>81,>96,>D7,>A8,>B8,>3D,>94,>3B,>3B,>5D
BYTE >67,>37,>85,>A1,>5F,>24,>4E,>3A,>3C,>89,>D6,>25,>5E,>79
BYTE >35,>50,>3B,>4D,>EA,>14,>51,>48,>5E,>16,>9D,>53,>34,>45
BYTE >56,>79,>34,>4F,>D1,>14,>99,>E7,>D3,>3C,>65,>D1,>EC,>DA
BYTE >47,>73,>55,>51,>49,>44,>1C,>AD,>56,>B1,>E0,>93,>9E,>2C
BYTE >4A,>49,>93,>AF,>5B,>32,>2A,>25,>0F,>B1,>EC,>C9,>68,>95
BYTE >35,>68,>60,>46,>E3,>60,>A6,>28,>4E,>33,>B1,>9D,>99,>B3
BYTE >58,>A4,>D7,>65,>7E,>0B,>19,>66,>12,>37,>25,>69,>90,>2F
BYTE >DB,>E2,>91,>F8,>C6,>F6,>AA,>93,>57,>1A,>7C,>E1,>1D,>D5
BYTE >3E,>89,>0F,>41,>7B,>D2,>E8,>24,>2E,>BA,>ED,>B8,>E3,>13
BYTE >47,>E9,>75,>11,>B1,>4E,>1C,>58,>D7,>A9,>C6,>1E,>B1,>E3
BYTE >33,>83,>6A,>B7,>25,>52,>6F,>A5,>B8,>9C,>95,>58,>B5,>1D
BYTE >EE,>89,>4F,>E6,>65,>5B,>76,>57,>3E,>45,>62,>EE,>DD,>5D
BYTE >E9,>54,>45,>92,>4D,>5E,>E9,>D3,>34,>8D,>5A,>75,>11,>5B
BYTE >D3,>05,>B3,>76,>5A,>76,>6D,>E3,>4C,>11,>91,>C4,>00,>D3
BYTE >93,>04,>60,>27,>E1,>00,>AC,>B1,>9E,>80,>D9,>4A,>13,>30
BYTE >6B,>F2,>29,>9A,>51,>B4,>E8,>C6,>A7,>28,>86,>74,>AB,>43
BYTE >9D,>72,>1A,>17,>77,>77,>72,>CA,>EE,>59,>2A,>3B,>D2,>29
BYTE >7B,>C0,>F0,>1E,>09,>A7,>6C,>16,>D3,>A7,>24,>9E,>A2,>3A
BYTE >F4,>EC,>A6,>B9,>8A,>A4,>B0,>6A,>0A,>61,>CB,>85,>B5,>8D
BYTE >48,>C6,>2D,>E7,>DE,>B6,>2C,>64,>AF,>22,>70,>CD,>1B,>A3
BYTE >BD,>8A,>28,>38,>EE,>9C,>F4,>2A,>BD,>96,>9A,>F6,>50,>A7
BYTE >76,>CE,>A2,>C3,>6A,>8E,>86,>D7,>8E,>72,>4E,>58,>3A,>3E
BYTE >23,>0B,>AD,>56,>E9,>45,>F7,>68,>F0,>49,>A5,>57,>D5,>E2
BYTE >98,>47,>97,>C1,>17,>8E,>13,>39,>59,>C6,>58,>30,>8F,>7D
BYTE >50,>1B,>63,>A6,>38,>F1,>22,>63,>4C,>89,>E2,>A4,>4A,>B7
BYTE >A9,>24,>D4,>B5,>2E,>32,>A6,>12,>31,>B2,>3A,>D2,>98,>AA
BYTE >47,>CB,>DA,>52,>63,>AA,>01,>AD,>6A,>43,>8E,>A9,>06,>F4
BYTE >AC,>89,>38,>A6,>1A,>C8,>A2,>A6,>72,>4B,>93,>51,>8F,>CC
BYTE >31,>29,>0D,>DA,>B2,>C3,>26,>11,>00,>C4,>6A,>02,>08,>E9
BYTE >41,>00,>19,>BD,>4A,>1D,>AD,>B4,>85,>A5,>29,>B5,>D2,>BA
BYTE >25,>6E,>FB,>D4,>41,>69,>B6,>97,>C5,>D3,>44,>AB,>59,>5E
BYTE >52,>56,>9B,>34,>77,>78,>52,>39,>6D,>71,>14,>3A,>45,>69
BYTE >B5,>D5,>60,>FA,>36,>A4,>D5,>66,>45,>7D,>95,>A0,>4B,>1B
BYTE >14,>EF,>A4,>81,>56,>8D,>17,>1C,>13,>25,>C5,>00,>55,>10
BYTE >3B,>20,>33,>42,>03,>34,>CE,>6A,>80,>4A,>59,>4B,>D0,>2D
BYTE >49,>F4,>48,>5C,>4D,>55,>58,>B5,>09,>7A,>74,>49,>D0,>66
BYTE >1B,>A2,>D4,>2B,>63,>9B,>1E,>28,>DD,>80,>53,>2C,>99,>A8
BYTE >4E,>03,>33,>59,>E5,>61,>69,>F5,>D3,>84,>87,>9A,>6D,>05
BYTE >74,>40,>65,>80,>02,>38,>1D,>50,>81,>A4,>03,>3A,>10,>77
BYTE >40,>05,>EC,>0E,>A0,>6E,>E3,>94,>DE,>44,>A7,>AF,>A4,>55
BYTE >06,>EB,>E3,>31,>92,>4A,>ED,>AD,>57,>44,>DA,>30,>43,>E6
BYTE >AC,>61,>91,>B8,>4D,>59,>9A,>79,>78,>DC,>D6,>3B,>63,>1D
BYTE >ED,>21,>4B,>27,>8C,>AE,>BB,>C8,>19,>BD,>57,>92,>D5,>29
BYTE >AA,>0D,>5E,>EA,>74,>04,>E4,>32,>06,>21,>B3,>21,>48,>DA
BYTE >58,>04,>E6,>74,>C0,>69,>63,>55,>E8,>D3,>0D,>AA,>4D,>49
BYTE >72,>4E,>24,>AD,>32,>79,>21,>63,>56,>A8,>CA,>64,>95,>AE
BYTE >5B,>30,>1A,>63,>56,>1C,>21,>2B,>69,>0C,>D1,>AB,>7B,>94
BYTE >AC,>35,>24,>E3,>69,>9E,>B4,>D7,>98,>6C,>24,>47,>C9,>1E
BYTE >63,>F0,>E9,>9A,>A6,>68,>CC,>31,>84,>6B,>BA,>EC,>B1,>14
BYTE >E3,>C9,>95,>56,>DA,>5A,>8D,>14,>AD,>87,>6D,>5B,>0D,>E2
BYTE >BC,>16,>76,>1C,>3D,>72,>F2,>64,>EC,>16,>57,>4B,>29,>DB
BYTE >92,>4A,>5C,>0D,>A5,>F6,>A8,>34,>81,>37,>52,>D1,>CD,>D0
BYTE >04,>D6,>58,>96,>2D,>0A,>E5,>55,>EF,>A2,>30,>9C,>4C,>59
BYTE >8D,>1B,>D3,>E8,>21,>40,>30,>A6,>04,>E0,>46,>18,>80,>00
BYTE >5A,>B1,>8B,>72,>78,>8B,>8C,>54,>AC,>EA,>99,>3C,>34,>5D
BYTE >09,>01,>AA,>F1,>20,>40,>D0,>12,>04,>B0,>86,>99,>00,>35
BYTE >AB,>3C,>FF
*;
*; nb bytes: [4764]
*;

end

ces.txt

Link to comment
Share on other sites

Are you using the BEGIN RAW SPEECH and END RAW SPEECH commands? These have to be sent to the synth before your raw data.

 

The code for BEGIN is >60

 

E.g. To begin talking...

 

LI R0,>6000
MOVB R0,@>9400 ; begin talking using raw data

 

When you have sent all your data, you need to send a STOP command.

 

The code for STOP is >FF

 

LI R0,>FF00
MOVB R0,@>9400 ; stop talking

 

Well, I believe that the "Begin raw speech" command is part of the speech data, yes. I noticed this by analyzing the speech data you get out with CALL SPGET (keep in mind I'm doing that with TI Extended Basic, not with assembler), which always starts with the bytes 96 and 0, followed by the number of following bytes, and then the actual speech data starts. I can't recall if all the speech data ends with FF, however...

 

However, when trying the program on the real TI-99, I noticed that even with some mistakes in the speech data (if they are there), the TI-99 still speaks the word correctly on each repeat, while it doesn't happen this way in MESS.

 

In addition, you need to make sure you are sending data too fast. On the REAL machine, this isn't a problem, as a full FIFO in the speech synth will halt the 9900. Your milage may vary with the various emulators however. MESS and Win994A handle it ok (Win994A as a direct result of my masochistic attempts to reproduce speech some time ago with it!).

 

Sorry, I have no control over that with Extended Basic.

But... are you the "master" of Win994A? If so, could you try to include my new coding table in it and compare it to the output of the real TI-99?

 

Reproduced below is a complete test program that you can test on your rig. It should work perfectly on the real TI. You just need to assemble it. I also attach the actual source file.

 

Well... I don't have much time for this at the moment... and presently I also cannot transfer assembler programs to the TI-99, only BASIC and XBASIC programs (since this works over the cassette cable).

 

But I will see if I get to it.

 

If you want the original files, send me an email. I'd be interested to hear how this sounds with the new coding tables. EXCELLENT JOB with the coding tables!!! AWESOME! :-) :thumbsup:

 

So did you try the new coding table somehow? I also have a version I already adapted for QBOX, which you could drop in instead of the existing QV5220.COD table, which I could send or attach if you want to have it.

 

Regards

 

Kurt

Edited by Kurt_Woloch
Link to comment
Share on other sites

So did you try the new coding table somehow? I also have a version I already adapted for QBOX, which you could drop in instead of the existing QV5220.COD table, which I could send or attach if you want to have it.

 

Regards

 

Kurt

 

Sure, go ahead and send it to me. I'll put it into QBOX and will re-compile some speech routines that I have. Thanks!

 

If you get random garbling on MESS it is possibly due to some bug in the speech core. The best emulator for speech is currently Win994A IMHO, with MESS a close second. The developer of WIn994A is Cory Burr, but he's very difficult to contact. He just appears sometimes, make a new Win994A release, and vanishes again!

 

Mark

Link to comment
Share on other sites

Sure, go ahead and send it to me. I'll put it into QBOX and will re-compile some speech routines that I have. Thanks!

 

OK, I've attached a zipped version of the changed coding table to this project. Be careful, though... there's a playback feature in QBOX which stops working properly as soon as the new coding table is in place. In some places (for instance, in the edit screen) it might even crash the program. I'd recommend making a backup of the old coding table before replacing it.

 

QV5220.zip

Link to comment
Share on other sites

  • 2 years later...

Sorry for reviving this thread, but I'm having problems again... after the TI-99 meeting last Wednesday, I decided to do something with speech again, this time in Assembler. I started out with the speech demo Willy posted in post #27 of this thread. After some fiddling around I managed to compile and run it in emulators, but the results vary. I've then expanded it a bit, including new speech data and a routine which should avoid flooding the speech synth with data, instead stopping when the buffer is full, but I'm not sure if that routine works correctly although I modeled it closely after what's printed in the Editor/Assembler manual.

 

This new demo actually only works correctly in Win994a, although the speech sounds a bit strange since that emulator still uses the wrong coding table, and I've used the correct one for encoding. :-)

 

In M.E.S.S. the results are pretty bad... the demo runs through in a split-second although it should normally last over 30 seconds. This is a bit strange because other speech programs like PARSEC work perfectly, although the speech still sounds a bit "scratchy" compared to the original.

 

In Classic99 the demo lasts for about the correct duration, but the speech is totally garbled... it seems like it's outputting all unvoiced data, and you can't make out what's being spoken at all.

 

I don't know if and how good it works on the real hardware because I don't have means to transfer the program to the TI-99 at the moment... I only have the cassette cable which only works for transferring BASIC and XBASIC programs which can be loaded from tape, but not for assembler programs.

I've attached the disk image as assembled to this thread for further inspection...

 

and here's the new assembler code (without the speech data at the end)...

 

 

	;
	; SPEECH DEMO FOR THE TI-99/4A
	; MARK WILLS JUNE 2008
	;
	; Sound was sampled from Helmi's Nightmare CD
	; Then converted to 8KHZ Mono, and processed with QBox.
	; QBox was rediscovered after Ben Yates contacted the original
	; designers of the 5220 TI Synth chip.
	; QBOX will take WAV samples and convert them into LPC
	; (Linear Predictive Coding)
	; for replaying by the speech chip.
	;
	; The original 8KHZ source wav file is 428KB in size.
	; The LPC equivalent of that is 4.65KB!
	;
	; Enjoy
	
	def SPEAK
	ref vsbw

	; The following code segment gets copied into 16-bit RAM
	; because TI states that the 8-bit bus cannot be used
	; immediately after a read from the speech synth
	; so we have to copy the code that reads data and does
	; a delay afterwards into the 16-bit RAM, otherwise it
	; would be executed from the RAM expansion, using the
	; 8-bit bus!

readit  movb @>9000,@>8328 ; read byte from synth into CPU RAM
	src r4, 12		 ; 12 microseconds delay (according to Willsy)
RT	; now 8-bit bus is free, so return

	; Here comes the actual entry point of our routine
	
SPEAK   li r4,nar	   ; address of narration
	clr r1		  ; clear r1 for VSBW utility
	clr r0		  ; screen address
			
	limi 0		  ; no interrupts

loop1   movb *r4+,r1	; display narration on screen
	jeq loop1f
	blwp @vsbw
	inc r0
	jmp loop1
		  
loop1f  li r1, >8330	; address where to put reading code
	li r2, readit   ; address where to copy reading code from
	li r3, 10	   ; 10 bytes to copy

dr2	 mov *r2+,*r1+   ; copy a word of code into CPU RAM
	dect r3		 ; decrement r3 by two (?!)
	jh dr2		  ; copy more words if necessary

	;Now prepare for actually putting out speech

	li r3,speech	; starting address of speach

	li r2,6066	  ; number of speech bytes to poke
	li r1, 17	   ; 16 bytes to load before checking queue + 1 external command

loop	movb *r3+,@>9400; poke a byte of speech data
	dec r2		  ; finished speaking?
	jeq quit		; if so then end
	jmp loop
	dec r1		  ; do we have to check if buffer full?
	jne loop		; else go 'round again

loopb bl @>8330	   ; check if buffer greater than 8 bytes
	movb @>8328,r0  ; get status register
	coc @>4000,r0   ; compare status bit
	jne loopb	   ; continue waiting if queue not free yet
	li r1,8		 ; prepare to send 8 more bytes (half queue)
	jmp loop

quit	limi 2		  ; interrupts allowed
	rt			  ; return to editor/assembler environment

nar	 text 'Erzaehl uns bitte, was gehört zu'
	text 'einem guten Gulasch, damit es   '
	text 'dir schmeckt? Also, meine Mutter'
	text 'hat ja seinerzeit immer ein sehr'
	text 'gutes Gulasch gemacht, da liegt '
	text 'jetzt natuerlich die Latte schon'
	text 'sehr hoch, wichtig ist auf jeden'
	text 'Fall, dass man es nicht in einem'
	text 'Schnellkochtopf machen darf,	'
	text 'weil ein Gulasch braucht eine   '
	text 'Zeit, bis das Fleisch ordentlich'
	text 'weich ist, man merkt das sofort,'
	text 'wenn es in einem Schnell - ah - '
	text 'Druckkochtopf gemacht wird	  '
	byte 0
	even
			
speech
	BYTE >60
(...)

gulasch.zip

Link to comment
Share on other sites

Take a look at your code beginning at the label "loop". That logic looks wrong to me.

 

You are actually sending all 6000 bytes in one big hit, then you decrement R1.

 

I think you need to remove that JMP after the DEC R2

 

Mark

 

Oh... you're right. Actually there's one line too much, which is the "jmp loop" before the "dec r1". This line causes the buffer checking part not ever to be executed and makes the whole code improvement pointless. I think I put in that line when I had another error as I found later (the command "jeq loop1f" after the "loop1" label jumped directly to "loop" instead, skipping all further initialization stuff) in order to check what's wrong, and then I forgot to remove it again. Actually, the way the program is now as above, it's functionally pretty much identical to your version. I will try that later, have to go to a birthday party now... anyway, thanks for spotting that bug!

Link to comment
Share on other sites

OK, I think I found the culprit. First I only removed the line "jmp loop" as mentioned above, but the speech still came out garbled in M.E.S.S. Then today I went to see how PARSEC handles speech, since that one obviously does work in M.E.S.S.... Of course, it does several things differently... the speech data gets fetched from a GROM, and it seems like the speech output runs in an interrupt generated once per frame... as long as speech is running, it polls the status byte, and if there are less than 8 bytes in the queue, it writes out 8 more bytes, but then it doesn't check again, but continues with the interrupt routine. However, this is not the error. But... I noticed that other things that could be functionally identical are written a bit differently in PARSEC.

 

In PARSEC, the READIT routine reads like this:

83E0: movb @>9000, R10
83E4: JMP 83E6
83E6: JMP 83E8
83E8: JMP 83EA
83EA: RET (= b * R11)
-------------------------------
7F7C: sla R10,2
 jnc 7F9A

This means the following:

- The contents of the status register are stored in R10 rather than a memory address. But since the workspace pointer at that time is set to 83E0 (actually overlapping with the READIT routine!), this works.

- The delay is performed by doing three jumps and then returning.

(Now comes the important part)

The actual checking is done by shifting R10 2 bits to the left and checking if the carry was set. If it wasn't set, there's a branch to 7F9A. If the branch is not taken, 8 more bytes are written to the speech synth.

Now I checked this in Classic99 by doing a breakpoint whenever address 9000 gets accessed. If more than 8 bytes are in the buffer, R10 gets set to 80EC. If there are less, R10 gets set to C0EC, which causes more bytes to be written.

 

Now this check is different from the one I actually typed off TI's own Editor/Assembler manual, where it goes like this:

coc @4000, R0
jne loopb

Actually, the TI manual puts this as "coc @H4000, R0", but I think this means the same. HOWEVER, it seems like they used the wrong addressing mode here. From what they're doing, it's clear that "4000" should be a mask against which R0 is checked. But "@H4000" or "@>4000" means that the CPU actually gets the word from memory address 4000 and uses that as the mask for checking R0. Address >4000 is actually the start of the 8k Peripheral card ROM. What it contains actually depends on which card is switched in.

 

Correctly, 4000 should be a constant given directly in the code, which gets used as the mask. I actually found that out when I debugged my code in Classic99 and saw that regardless if R0 was set to 80xx or C0xx, an overflow was never registered. Unfortunately, a constant as the mask isn't even supported by the COC command. Constants (mode "immediate addressing" are only supported by the commands AI, ANDI, CI, LI, LIMI, LWPI and ORI, and those commands don't support any other addressing mode in this place. Thus, the line "coc @H4000, R0" is actually unusable. A usable command in this place would be the ANDI command, like this:

 

andi R0, >4000
jeq  loopb

 

I've now tested my program this way, and it works. I've already cleaned up the speech somewhat. In MESS, it still sounds a bit scratchy... on the real TI-99 it probably sounds nicer because it's more bass-y.

 

Here's the complete new code:


	;
	; SPEECH DEMO FOR THE TI-99/4A
	; MARK WILLS JUNE 2008
; ADAPTED BY KURT WOLOCH IN MARCH 2012
	; IN ORDER NOT TO FLOOD THE SPEECH SYNTH
	;
	; Sound was sampled from Helmi's Nightmare CD
	; Then converted to 8KHZ Mono, and processed with QBox,
	; using the correct coding table for the TI synth.
	; Actually, to get roughly the correct speed, the speech
	; has to be sped up by 25%, then saved as a 10 kHz WAV file
	; and processed as a 10 kHz WAV file.
	; QBox was rediscovered after Ben Yates contacted the original
	; designers of the 5220 TI Synth chip.
	; QBOX will take WAV samples and convert them into LPC
	; (Linear Predictive Coding)
	; for replaying by the speech chip.
	;
	; Enjoy

	def SPEAK
	ref vsbw

	; The following code segment gets copied into 16-bit RAM
	; because TI states that the 8-bit bus cannot be used
	; immediately after a read from the speech synth
	; so we have to copy the code that reads data and does
	; a delay afterwards into the 16-bit RAM, otherwise it
	; would be executed from the RAM expansion, using the
	; 8-bit bus!

readit  movb @>9000,@>8328 ; read byte from synth into CPU RAM
	src r4, 12		 ; 12 microseconds delay (according to Willsy)
RT	; now 8-bit bus is free, so return

	; Here comes the actual entry point of our routine

SPEAK   mov r11, r12	; save return address
	li r4,nar	   ; address of narration
	clr r1		  ; clear r1 for VSBW utility
	clr r0		  ; screen address

	limi 0		  ; no interrupts

loop1   movb *r4+,r1	; display narration on screen
	jeq loop1f
	blwp @vsbw
	inc r0
	jmp loop1

loop1f  li r1, >8330	; address where to put reading code
	li r2, readit   ; address where to copy reading code from
	li r3, 10	   ; 10 bytes to copy

dr2	 mov *r2+,*r1+   ; copy a word of code into CPU RAM
	dect r3		 ; decrement r3 by two (?!)
	jh dr2		  ; copy more words if necessary

	;Now prepare for actually putting out speech

	li r3,speech	; starting address of speach

	li r2,5301	  ; number of speech bytes to poke including external command
	li r1, 17	   ; 16 bytes to load before checking queue + 1 external command

loop	movb *r3+,@>9400; poke a byte of speech data
	dec r2		  ; finished speaking?
	jeq quit		; if so then end
	dec r1		  ; do we have to check if buffer full?
	jne loop		; else go 'round again

loopb bl @>8330	   ; check if buffer greater than 8 bytes
	movb @>8328,r0  ; get status register
	andi r0,>4000   ; compare status bit
	jeq loopb	   ; continue waiting if queue not free yet
	li r1,8		 ; prepare to send 8 more bytes (half queue)
	jmp loop

quit	mov r12, r11 ; restore return address
limi 2		  ; interrupts allowed
	rt			  ; return to editor/assembler environment

nar	 text 'Erzaehl uns bitte, was gehört zu'
	text 'einem guten Gulasch, damit es   '
	text 'dir schmeckt? Also, meine Mutter'
	text 'hat ja seinerzeit immer ein sehr'
	text 'gutes Gulasch gemacht, da liegt '
	text 'jetzt natuerlich die Latte schon'
	text 'sehr hoch, wichtig ist auf jeden'
	text 'Fall, dass man es nicht in einem'
	text 'Schnellkochtopf machen darf,	'
	text 'weil ein Gulasch braucht eine   '
	text 'Zeit, bis das Fleisch ordentlich'
	text 'weich ist, man merkt das sofort,'
	text 'wenn es in einem Schnell - ah - '
	text 'Druckkochtopf gemacht wird	  '
	byte 0
	even

speech
	BYTE >60
BYTE >00,>00,>00,>40,>00,>3E,>6B,>8A,>66,>92,>5F,>17,>D9,>2D
BYTE >AA,>4B,>DE,>F5,>64,>A7,>A8,>36,>59,>D5,>90,>15,>06,>48
BYTE >6B,>43,>00,>99,>6C,>00,>08,>60,>BD,>16,>01,>BC,>97,>60
BYTE >00,>1E,>F5,>45,>71,>46,>7E,>4B,>4C,>15,>C5,>1A,>FD,>6B
BYTE >4F,>5C,>14,>63,>FD,>B7,>2C,>6D,>51,>AC,>B1,>CD,>77,>59
BYTE >45,>71,>D2,>3A,>3C,>4D,>17,>C5,>2B,>1B,>AF,>B1,>54,>14
BYTE >53,>B5,>B2,>4C,>4E,>52,>54,>D1,>89,>54,>AB,>46,>61,>39
BYTE >DE,>4D,>8C,>2A,>85,>D6,>5C,>77,>A6,>02,>00,>00,>04,>C0
BYTE >BD,>3E,>A9,>D2,>C5,>77,>89,>24,>A5,>09,>6F,>5F,>09,>52
BYTE >00,>00,>08,>C0,>9B,>5F,>D1,>54,>B4,>AD,>25,>BB,>45,>33
BYTE >41,>B7,>1A,>ED,>14,>4D,>47,>DB,>4C,>51,>A4,>0C,>91,>BD
BYTE >3D,>43,>11,>40,>D1,>75,>8F,>B1,>4A,>39,>45,>B7,>CB,>2B
BYTE >BB,>98,>15,>DD,>6D,>AF,>6A,>53,>5B,>34,>B3,>B2,>A3,>45
BYTE >59,>52,>74,>8F,>8E,>60,>7B,>04,>60,>5D,>92,>00,>AA,>59
BYTE >10,>80,>17,>73,>00,>20,>40,>D0,>9E,>04,>20,>AD,>A7,>A8
BYTE >C6,>D8,>77,>B3,>E2,>A4,>39,>CB,>5B,>4B,>8A,>83,>66,>1D
BYTE >4F,>34,>2B,>4A,>BA,>69,>52,>1E,>1A,>29,>E9,>26,>CA,>46
BYTE >B1,>92,>62,>D8,>28,>17,>2D,>72,>8A,>61,>B2,>7E,>2E,>DB
BYTE >2D,>A6,>2D,>B6,>D9,>AC,>A4,>18,>A6,>DA,>D4,>90,>DD,>64
BYTE >E8,>AA,>5B,>8D,>71,>08,>C0,>A6,>36,>00,>10,>40,>07,>2B
BYTE >02,>B0,>EA,>53,>74,>93,>6C,>6A,>40,>49,>D1,>6D,>B6,>AD
BYTE >26,>25,>65,>8C,>59,>AB,>9E,>EC,>94,>22,>66,>8F,>5E,>B2
BYTE >52,>EC,>90,>7D,>BA,>D1,>56,>B1,>42,>B6,>A9,>40,>2B,>C5
BYTE >F2,>C9,>26,>1D,>A3,>25,>CB,>25,>ED,>72,>8A,>66,>2C,>11
BYTE >7C,>A3,>C9,>9A,>B1,>44,>B2,>8B,>24,>65,>C1,>D6,>49,>B7
BYTE >02,>AD,>26,>DB,>46,>EB,>2A,>70,>92,>1C,>9B,>B4,>B3,>48
BYTE >B1,>B1,>45,>B6,>B1,>4A,>85,>C6,>16,>D9,>5A,>26,>15,>28
BYTE >9B,>57,>6F,>19,>97,>29,>1C,>DA,>73,>38,>4D,>31,>71,>E8
BYTE >C8,>51,>53,>A9,>00,>00,>00,>00,>00,>00,>00,>00,>00,>00
BYTE >00,>00,>42,>62,>5F,>AD,>3A,>69,>26,>89,>BF,>32,>CD,>D0
BYTE >58,>78,>79,>2A,>CC,>5D,>73,>E1,>65,>AF,>F4,>54,>C5,>85
BYTE >D5,>CB,>3C,>C6,>6D,>06,>D6,>1C,>B2,>6E,>95,>05,>00,>00
BYTE >4E,>A2,>AD,>DA,>9C,>6C,>3B,>89,>B6,>5C,>09,>72,>6C,>24
BYTE >92,>63,>22,>8C,>3C,>00,>01,>C4,>81,>4F,>2A,>7B,>5E,>99
BYTE >E1,>A6,>A8,>7C,>F9,>94,>85,>96,>A2,>8A,>61,>ED,>91,>49
BYTE >8B,>A6,>93,>87,>4F,>86,>2F,>9A,>8D,>1A,>F9,>1E,>AF,>68
BYTE >2E,>91,>D7,>A7,>AC,>A4,>59,>67,>E6,>3F,>94,>8B,>66,>83
BYTE >65,>9E,>29,>2E,>9A,>C9,>DE,>F5,>2A,>BB,>68,>26,>C5,>D4
BYTE >AA,>AC,>A2,>99,>E8,>55,>23,>B2,>93,>A6,>9D,>47,>36,>2B
BYTE >76,>7A,>95,>C1,>91,>C5,>C4,>69,>D3,>94,>9A,>8D,>1C,>02
BYTE >38,>D6,>42,>80,>C8,>42,>08,>90,>B8,>0B,>01,>32,>0F,>26
BYTE >40,>56,>41,>00,>00,>40,>00,>D1,>3C,>8B,>AE,>8A,>57,>0D
BYTE >38,>2E,>BA,>AE,>3A,>B3,>E4,>DA,>99,>B2,>68,>65,>29,>23
BYTE >A7,>8B,>E8,>13,>D9,>88,>9C,>CE,>63,>BC,>7B,>21,>2A,>9A
BYTE >36,>FE,>19,>22,>AB,>68,>CA,>C4,>4F,>92,>64,>A7,>71,>97
BYTE >9F,>09,>92,>00,>80,>00,>2C,>5B,>3B,>43,>46,>BD,>3E,>8A
BYTE >65,>0C,>91,>EC,>66,>D1,>16,>00,>00,>04,>53,>07,>CF,>08
BYTE >8D,>93,>4C,>ED,>AD,>BB,>49,>71,>B0,>8C,>B3,>EC,>51,>56
BYTE >04,>30,>24,>8C,>00,>16,>59,>11,>C0,>61,>73,>02,>38,>6E
BYTE >06,>C2,>66,>29,>B2,>3C,>C4,>38,>47,>25,>AB,>C8,>90,>53
BYTE >02,>1F,>AC,>B2,>58,>49,>89,>BC,>B5,>AD,>40,>BB,>21,>8E
BYTE >9A,>B7,>83,>6C,>83,>F1,>AD,>F7,>0F,>A1,>B0,>C9,>D7,>31
BYTE >DE,>23,>CC,>15,>3F,>04,>6B,>AB,>16,>13,>02,>AF,>C3,>DD
BYTE >C3,>28,>01,>40,>99,>24,>00,>C8,>93,>C5,>B6,>2E,>CE,>44
BYTE >AD,>16,>5B,>F5,>7E,>53,>8F,>96,>6C,>B5,>6A,>4D,>3B,>1E
BYTE >01,>F8,>33,>27,>00,>DE,>16,>00,>C6,>AF,>89,>DA,>02,>DC
BYTE >06,>AF,>25,>4C,>77,>55,>1B,>DC,>56,>B1,>DC,>44,>6B,>72
BYTE >6A,>C1,>71,>33,>39,>C5,>29,>41,>AA,>3A,>65,>17,>A7,>26
BYTE >C9,>7A,>93,>53,>EC,>12,>A5,>EA,>4D,>4E,>B1,>4B,>94,>CA
BYTE >67,>D9,>C1,>8C,>56,>DA,>53,>4C,>15,>3D,>6A,>DB,>78,>B0
BYTE >5B,>74,>6F,>E2,>AA,>C1,>59,>D0,>4D,>CC,>35,>23,>3B,>CE
BYTE >30,>CE,>5E,>85,>95,>38,>53,>C7,>38,>26,>92,>E7,>4C,>E3
BYTE >EC,>58,>D0,>9A,>B3,>B4,>D6,>53,>A5,>38,>C1,>92,>BD,>06
BYTE >D8,>3D,>1A,>8B,>CF,>72,>90,>F6,>68,>2C,>DA,>3A,>98,>33
BYTE >15,>00,>10,>80,>AB,>E8,>A4,>A8,>54,>65,>65,>56,>8A,>AA
BYTE >7A,>AF,>A7,>9B,>29,>AA,>4D,>F1,>DA,>2E,>B7,>68,>36,>E7
BYTE >73,>1B,>D5,>A0,>EB,>16,>AB,>AE,>72,>82,>A1,>57,>2E,>47
BYTE >C8,>0E,>86,>DE,>39,>50,>E9,>38,>99,>7A,>E4,>42,>8E,>B3
BYTE >64,>EA,>9E,>CD,>3E,>71,>09,>40,>8E,>38,>00,>01,>94,>88
BYTE >2A,>7A,>09,>16,>56,>61,>A8,>E8,>29,>5B,>D8,>8C,>91,>A2
BYTE >A7,>A8,>23,>5B,>66,>83,>11,>82,>B5,>59,>91,>36,>56,>72
BYTE >A6,>CE,>1E,>85,>00,>C2,>44,>10,>40,>98,>08,>06,>90,>14
BYTE >59,>9C,>10,>74,>22,>95,>4C,>71,>53,>94,>AE,>16,>A9,>C5
BYTE >CF,>91,>2B,>1B,>A5,>95,>20,>79,>9E,>48,>B0,>9A,>FC,>EC
BYTE >71,>AC,>24,>6C,>72,>73,>A4,>35,>17,>B3,>C5,>36,>31,>DF
BYTE >5D,>CD,>26,>4B,>97,>3C,>35,>93,>A2,>2C,>11,>A3,>DD,>DC
BYTE >B6,>B0,>95,>F7,>36,>73,>2B,>CC,>36,>56,>D3,>4D,>6D,>33
BYTE >DB,>6A,>F3,>50,>55,>0C,>A0,>00,>EE,>6C,>0D,>60,>AC,>7D
BYTE >F1,>4B,>A2,>8E,>2B,>DB,>C5,>AF,>99,>CB,>BE,>6C,>15,>BF
BYTE >14,>09,>BE,>B0,>45,>00,>16,>ED,>09,>C0,>9D,>1D,>01,>64
BYTE >88,>06,>00,>00,>00,>00,>00,>00,>A2,>90,>D0,>13,>CE,>F1
BYTE >9C,>AE,>94,>D4,>14,>AB,>0F,>B6,>52,>D1,>6B,>18,>DF,>D9
BYTE >D2,>E8,>07,>99,>73,>67,>69,>25,>5B,>2C,>F6,>83,>65,>34
BYTE >BF,>BB,>CB,>49,>A6,>37,>74,>E2,>2A,>A7,>98,>A6,>5A,>C7
BYTE >84,>B4,>62,>86,>6A,>99,>7D,>A6,>8B,>E9,>AB,>66,>6E,>8A
BYTE >56,>80,>6C,>B9,>0A,>50,>A5,>BE,>B8,>D9,>4B,>CF,>B2,>94
BYTE >E2,>26,>27,>5D,>05,>52,>93,>6F,>B5,>8D,>3B,>26,>0B,>BE
BYTE >D4,>F6,>1E,>12,>CD,>05,>38,>D6,>BB,>9B,>13,>15,>12,>1B
BYTE >1B,>AE,>B6,>55,>A4,>94,>75,>5A,>5A,>01,>00,>48,>5E,>71
BYTE >C4,>71,>6E,>BB,>F8,>35,>13,>E4,>67,>E2,>E2,>B7,>C2,>10
BYTE >97,>56,>8A,>DB,>BA,>70,>6C,>88,>2A,>4E,>09,>9C,>39,>6D
BYTE >BB,>D8,>29,>4A,>D9,>AE,>6D,>05,>88,>14,>4B,>00,>9E,>E2
BYTE >08,>C0,>82,>1D,>80,>F3,>E4,>E9,>32,>52,>B5,>CA,>65,>B3
BYTE >5C,>B1,>BD,>2A,>97,>A5,>09,>11,>4F,>CE,>3C,>E6,>E2,>4D
BYTE >C5,>1D,>00,>40,>32,>53,>30,>13,>1D,>31,>C5,>CC,>D5,>13
BYTE >72,>04,>27,>CB,>3B,>0D,>CD,>A6,>EA,>EC,>C4,>4D,>3D,>22
BYTE >A6,>B1,>12,>71,>8B,>AA,>44,>C6,>CA,>D2,>34,>54,>23,>03
BYTE >00,>01,>C8,>03,>55,>01,>7F,>2A,>52,>EB,>CC,>05,>7C,>45
BYTE >82,>4E,>15,>17,>C8,>66,>C5,>81,>D9,>5C,>A0,>92,>94,>0D
BYTE >64,>49,>8E,>77,>7A,>16,>6E,>A5,>B8,>CE,>FB,>7B,>A6,>95
BYTE >E2,>06,>6F,>EF,>91,>76,>92,>97,>BC,>AC,>AB,>9B,>61,>80
BYTE >57,>9C,>0C,>08,>92,>85,>00,>41,>53,>02,>10,>40,>48,>5B
BYTE >E7,>96,>00,>51,>25,>D4,>8B,>5B,>33,>45,>94,>51,>09,>7E
BYTE >B4,>F0,>96,>E2,>34,>04,>D1,>C2,>7B,>6A,>12,>17,>7A,>83
BYTE >AF,>A1,>ED,>42,>E4,>2D,>9D,>98,>B8,>2D,>89,>AE,>F9,>2E
BYTE >2E,>A5,>24,>BA,>C7,>9B,>9B,>EC,>12,>99,>11,>6F,>65,>4A
BYTE >4A,>60,>BA,>BF,>8D,>CA,>2D,>81,>6D,>FE,>B6,>26,>27,>B9
BYTE >B6,>D9,>DB,>89,>9C,>64,>BB,>62,>2F,>47,>72,>9C,>1D,>AA
BYTE >94,>5A,>91,>26,>80,>4A,>E6,>04,>A0,>45,>83,>00,>B0,>58
BYTE >02,>00,>00,>00,>80,>00,>44,>CE,>2D,>81,>F7,>FE,>89,>51
BYTE >AF,>04,>26,>C5,>3B,>55,>B2,>12,>98,>12,>AF,>32,>71,>42
BYTE >A0,>67,>AC,>CA,>44,>35,>A1,>DA,>9E,>A6,>1E,>55,>05,>BA
BYTE >E8,>88,>A9,>37,>15,>E8,>A4,>C3,>21,>BE,>5C,>E0,>AC,>8E
BYTE >A4,>D1,>2B,>7E,>CB,>12,>D6,>61,>A9,>F8,>AD,>92,>FA,>B8
BYTE >99,>10,>54,>07,>5E,>63,>56,>08,>00,>5A,>3F,>98,>38,>49
BYTE >CE,>48,>B5,>6B,>BC,>6C,>C0,>7B,>D9,>9A,>F1,>B2,>22,>CB
BYTE >63,>DB,>2A,>E8,>59,>91,>2B,>14,>13,>00,>8B,>18,>70,>8E
BYTE >53,>F8,>EE,>EA,>38,>B8,>D1,>E0,>59,>92,>93,>E2,>DA,>10
BYTE >E7,>21,>56,>92,>67,>7D,>AC,>B8,>D8,>12,>81,>08,>DE,>5A
BYTE >61,>93,>79,>D2,>7B,>69,>86,>0D,>E1,>6A,>1D,>15,>66,>76
BYTE >9D,>5B,>B5,>6A,>98,>95,>2E,>6E,>09,>12,>E2,>1D,>A6,>B8
BYTE >C5,>B3,>9B,>56,>18,>13,>28,>67,>11,>E9,>D2,>8C,>A7,>9D
BYTE >BA,>57,>D2,>4B,>5E,>B2,>1C,>9E,>61,>39,>78,>C1,>60,>76
BYTE >99,>5C,>13,>D4,>48,>14,>13,>71,>08,>60,>24,>3A,>03,>82
BYTE >11,>66,>40,>0D,>26,>0C,>F0,>8A,>2C,>05,>D6,>FB,>39,>49
BYTE >DC,>14,>E8,>5A,>27,>E4,>D1,>4A,>68,>43,>3E,>2B,>36,>71
BYTE >A1,>55,>FA,>62,>38,>5F,>85,>DC,>C4,>6B,>5A,>63,>15,>58
BYTE >61,>1E,>65,>61,>8A,>5F,>3D,>B9,>57,>48,>29,>41,>09,>68
BYTE >D1,>69,>27,>05,>D1,>50,>7A,>A7,>15,>13,>71,>63,>9F,>A9
BYTE >4E,>5C,>A4,>35,>BD,>A6,>BA,>75,>31,>0D,>DE,>1A,>E9,>2C
BYTE >25,>B2,>C6,>30,>BB,>DC,>92,>AA,>9B,>6B,>E6,>72,>4B,>AA
BYTE >4E,>AC,>45,>C8,>2D,>A9,>DA,>F9,>1A,>21,>C7,>A5,>BA,>E7
BYTE >73,>25,>2D,>02,>D0,>E2,>43,>00,>54,>E3,>08,>80,>66,>14
BYTE >01,>E0,>F6,>28,>89,>5A,>F5,>DC,>A6,>B8,>24,>7A,>E7,>4B
BYTE >B9,>D2,>92,>98,>91,>2F,>ED,>72,>4B,>6C,>6A,>BE,>5C,>28
BYTE >4E,>B1,>C9,>F1,>B8,>26,>1B,>00,>A0,>B8,>BD,>3A,>A6,>5A
BYTE >EC,>E4,>C6,>A8,>66,>D1,>94,>83,>EF,>83,>68,>44,>8B,>36
BYTE >7E,>56,>C6,>A5,>ED,>08,>00,>08,>40,>5D,>5C,>F2,>6A,>41
BYTE >F3,>71,>29,>C5,>2F,>99,>32,>C6,>A5,>94,>20,>25,>69,>FB
BYTE >94,>5C,>42,>17,>ED,>EC,>55,>4E,>08,>4D,>CB,>E1,>10,>55
BYTE >04,>40,>53,>82,>00,>E0,>78,>AA,>90,>3F,>37,>61,>D7,>CD
BYTE >22,>FE,>5D,>99,>43,>B7,>0A,>D8,>0B,>16,>19,>5D,>CC,>67
BYTE >DF,>50,>7D,>75,>09,>87,>7F,>43,>F5,>D6,>9C,>1C,>95,>FB
BYTE >12,>38,>BB,>B1,>C5,>69,>17,>B0,>CF,>CA,>62,>3B,>43,>60
BYTE >96,>28,>4B,>9C,>54,>85,>A9,>4B,>2C,>F9,>9B,>8D,>CB,>8E
BYTE >7A,>D5,>6B,>32,>0C,>3B,>00,>00,>00,>00,>00,>00,>00,>00
BYTE >00,>00,>00,>00,>C2,>26,>3E,>4E,>CD,>9C,>0B,>17,>A4,>9A
BYTE >70,>8E,>56,>AC,>E2,>91,>33,>22,>68,>B1,>B2,>10,>F6,>09
BYTE >CB,>C5,>A8,>5E,>41,>CF,>6D,>27,>2D,>6A,>94,>19,>B5,>E2
BYTE >34,>CF,>C4,>FA,>DD,>B6,>02,>02,>91,>10,>40,>50,>AC,>04
BYTE >C0,>B6,>56,>00,>86,>5B,>14,>A5,>46,>D0,>6A,>93,>12,>94
BYTE >A2,>21,>7A,>54,>9E,>50,>A3,>60,>EB,>72,>39,>04,>90,>CC
BYTE >86,>01,>9E,>6A,>06,>B5,>18,>F0,>69,>96,>57,>D4,>EA,>C0
BYTE >6A,>55,>5A,>52,>8B,>07,>CD,>13,>A9,>41,>F3,>92,>A3,>5A
BYTE >E4,>38,>3D,>2A,>15,>CF,>92,>45,>00,>EC,>B3,>09,>80,>43
BYTE >35,>01,>84,>76,>17,>00,>4B,>51,>C5,>F4,>CE,>DE,>63,>6C
BYTE >17,>D3,>A4,>78,>F3,>B5,>5A,>2C,>5D,>F3,>D5,>46,>49,>B2
BYTE >4C,>89,>67,>1D,>C7,>04,>C0,>DB,>82,>00,>34,>47,>11,>80
BYTE >A4,>2C,>02,>48,>63,>41,>00,>62,>ED,>9D,>53,>23,>44,>B5
BYTE >5B,>0E,>4E,>CB,>C0,>B3,>2E,>AB,>D8,>2D,>83,>F4,>86,>95
BYTE >62,>F5,>09,>92,>EB,>56,>8A,>D5,>2A,>68,>5C,>58,>4D,>56
BYTE >F1,>10,>F9,>21,>89,>00,>A0,>F7,>33,>00,>D6,>FA,>A0,>07
BYTE >43,>6F,>4A,>D6,>82,>EE,>8D,>9C,>2B,>49,>73,>A6,>37,>7C
BYTE >AE,>64,>4E,>59,>DC,>C5,>BA,>B9,>15,>20,>00,>4E,>D9,>40
BYTE >00,>11,>A3,>8B,>6B,>4A,>BC,>6A,>29,>2D,>BE,>9E,>F9,>D2
BYTE >EE,>B4,>84,>FA,>E5,>CB,>BA,>12,>13,>E9,>EF,>63,>A7,>4A
BYTE >4B,>A4,>5E,>9C,>94,>2A,>29,>A1,>DE,>71,>56,>21,>A7,>04
BYTE >A6,>C4,>87,>8F,>9C,>E2,>C7,>A8,>9D,>76,>B1,>8B,>93,>86
BYTE >85,>56,>17,>29,>56,>AE,>EA,>1E,>35,>A6,>98,>79,>9A,>9B
BYTE >E7,>90,>64,>A4,>EB,>22,>6E,>43,>9C,>19,>1B,>9B,>65,>98
BYTE >66,>80,>9C,>7E,>04,>90,>C7,>9F,>00,>F2,>56,>33,>40,>9E
BYTE >EE,>E2,>D9,>50,>1B,>59,>76,>8B,>6B,>63,>AE,>57,>D9,>2D
BYTE >AE,>4E,>F5,>DE,>ED,>B4,>38,>AA,>D7,>F9,>B6,>93,>E2,>E8
BYTE >9A,>67,>DF,>B6,>8B,>63,>62,>BD,>75,>C8,>29,>8E,>09,>F5
BYTE >1E,>AE,>A4,>38,>D6,>C5,>9B,>BB,>5C,>E7,>D8,>E4,>CE,>5D
BYTE >B2,>08,>40,>5A,>24,>00,>01,>E4,>CC,>2A,>91,>89,>F9,>D6
BYTE >61,>A7,>B8,>A6,>E6,>EB,>BA,>DC,>E2,>9A,>91,>AF,>67,>72
BYTE >8B,>63,>6A,>BE,>AC,>C9,>4B,>8E,>8B,>FE,>3C,>6C,>D6,>B9
BYTE >B6,>78,>9A,>0C,>2D,>02,>A8,>90,>4A,>00,>A6,>33,>08,>20
BYTE >A4,>25,>18,>CB,>18,>3A,>E7,>54,>12,>AC,>E0,>70,>25,>C4
BYTE >59,>B1,>6D,>8C,>0F,>75,>73,>C5,>D6,>2D,>3E,>2A,>AC,>16
BYTE >DB,>D4,>38,>6F,>B7,>5A,>1C,>9B,>FC,>AD,>24,>6A,>71,>A2
BYTE >93,>E1,>90,>2A,>C9,>09,>96,>47,>43,>6A,>07,>C7,>1A,>3E
BYTE >0D,>8D,>12,>1C,>6D,>E4,>CD,>CC,>4E,>70,>8C,>E6,>77,>97
BYTE >D8,>C1,>D1,>5A,>DE,>9C,>63,>3B,>D7,>2B,>FC,>28,>8C,>13
BYTE >5C,>AB,>F8,>C3,>25,>49,>70,>83,>A4,>BE,>00,>F7,>C1,>89
BYTE >0A,>F3,>13,>9C,>05,>CB,>0A,>CE,>0B,>B4,>6B,>2C,>23,>A9
BYTE >CE,>21,>A9,>B2,>88,>AE,>59,>E3,>38,>CE,>EA,>1A,>55,>36
BYTE >E4,>3A,>AB,>07,>21,>AE,>B2,>63,>AC,>61,>99,>39,>3A,>AD
BYTE >B2,>76,>22,>61,>69,>37,>00,>20,>80,>60,>CD,>05,>20,>62
BYTE >35,>03,>F8,>8C,>0A,>A6,>89,>D1,>3E,>65,>B9,>D8,>36,>46
BYTE >FB,>94,>9C,>E2,>98,>1C,>65,>1B,>54,>8B,>63,>52,>94,>6D
BYTE >CA,>2D,>8E,>0D,>D1,>B6,>4D,>B7,>38,>CE,>F9,>C8,>95,>94
BYTE >E2,>78,>63,>AF,>53,>56,>8A,>E3,>9D,>B5,>6C,>5B,>29,>4E
BYTE >F0,>D6,>7C,>1D,>BB,>38,>31,>69,>C8,>4D,>94,>E4,>E4,>A8
BYTE >61,>D9,>51,>19,>A0,>8D,>B6,>00,>B4,>91,>2E,>6E,>89,>62
BYTE >B6,>6A,>D9,>B9,>C1,>AA,>79,>A5,>6C,>02,>10,>13,>09,>04
BYTE >60,>C1,>83,>00,>A0,>D5,>38,>DB,>2A,>7A,>77,>51,>15,>6C
BYTE >AB,>64,>DB,>58,>5D,>B2,>82,>90,>B8,>26,>66,>C1,>72,>42
BYTE >F2,>13,>95,>18,>4B,>71,>EF,>69,>A1,>45,>00,>AC,>E6,>01
BYTE >08,>C0,>6C,>14,>03,>B8,>D1,>2F,>76,>8E,>68,>39,>46,>37
BYTE >38,>DE,>F0,>44,>38,>9B,>E0,>66,>87,>E3,>AE,>2C,>8A,>17
BYTE >9D,>4E,>AE,>DB,>2A,>5E,>0A,>D2,>FD,>21,>A7,>78,>29,>48
BYTE >F5,>B9,>9C,>E2,>C7,>A8,>19,>D3,>36,>93,>57,>02,>86,>64
BYTE >78,>2A,>5E,>4C,>16,>BE,>65,>B3,>F8,>31,>4A,>7A,>A7,>E1
BYTE >E0,>07,>4B,>6D,>E9,>76,>82,>E7,>8C,>9C,>B9,>C8,>75,>9E
BYTE >B1,>7A,>1A,>22,>CF,>78,>D2,>FA,>AB,>8B,>3D,>E5,>D3,>90
BYTE >6F,>61,>76,>48,>48,>7D,>AC,>97,>29,>01,>02,>08,>2B,>0D
BYTE >04,>48,>1E,>8C,>00,>39,>12,>13,>A0,>56,>46,>06,>B4,>AC
BYTE >4C,>80,>EC,>45,>81,>00,>70,>F6,>97,>A0,>58,>CA,>68,>67
BYTE >54,>82,>D6,>C8,>62,>83,>56,>09,>FA,>42,>89,>4D,>59,>25
BYTE >68,>0D,>35,>2E,>64,>05,>3F,>1A,>CA,>EC,>B0,>15,>DC,>68
BYTE >D5,>E4,>CA,>96,>73,>9C,>D4,>F6,>8E,>84,>CA,>49,>9E,>D5
BYTE >22,>62,>33,>2F,>3A,>76,>AF,>4A,>48,>5C,>A7,>24,>A2,>32
BYTE >11,>71,>A2,>65,>B3,>88,>C4,>C4,>49,>4E,>C2,>55,>13,>13
BYTE >37,>5A,>09,>B7,>70,>0C,>00,>00,>00,>00,>00,>00,>40,>00
BYTE >59,>3C,>8D,>27,>9F,>A9,>72,>3A,>56,>9E,>FC,>41,>81,>6B
BYTE >DB,>79,>F2,>2D,>06,>BC,>1D,>E7,>89,>7D,>18,>F0,>4E,>98
BYTE >CF,>BF,>91,>CB,>2B,>06,>00,>00,>20,>80,>30,>D1,>25,>30
BYTE >39,>D7,>C1,>AA,>96,>50,>BD,>0A,>C5,>AA,>AA,>42,>F9,>23
BYTE >98,>3E,>AC,>08,>D9,>75,>67,>2E,>BB,>24,>A4,>33,>87,>39
BYTE >ED,>90,>90,>8F,>4C,>65,>73,>0A,>00,>00,>2E,>50,>96,>DF
BYTE >CA,>FD,>B8,>50,>3A,>39,>6B,>F7,>9D,>22,>5D,>F5,>D8,>C4
BYTE >51,>89,>F4,>F1,>D7,>52,>5B,>25,>D6,>CB,>DF,>4B,>6D,>95
BYTE >58,>4F,>7B,>2F,>53,>94,>22,>D3,>ED,>B5,>D1,>56,>88,>5D
BYTE >E5,>0E,>71,>52,>04,>00,>55,>07,>C0,>78,>C6,>99,>A5,>98
BYTE >B5,>E0,>05,>C7,>AB,>85,>71,>92,>17,>2C,>AF,>26,>D9,>71
BYTE >BE,>37,>F8,>5A,>14,>97,>00,>E0,>D4,>02,>01,>78,>8B,>51
BYTE >80,>58,>31,>21,>D1,>3B,>4E,>06,>6C,>97,>44,>AF,>7C,>69
BYTE >76,>5D,>22,>3D,>F3,>E5,>C4,>71,>09,>F5,>C8,>D7,>76,>D5
BYTE >25,>30,>35,>5E,>C6,>5D,>17,>D7,>F4,>7C,>19,>55,>95,>1C
BYTE >D3,>E3,>B9,>93,>25,>03,>58,>37,>27,>80,>2C,>9E,>04,>E0
BYTE >D9,>03,>00,>80,>00,>D6,>7B,>12,>40,>BB,>28,>00,>00,>00
BYTE >00,>00,>00,>00,>00,>00,>00,>00,>02,>50,>EF,>AF,>7C,>E5
BYTE >E4,>C3,>55,>9E,>09,>A8,>8F,>2B,>B7,>64,>C5,>2F,>55,>C2
BYTE >79,>C2,>14,>AF,>14,>49,>8F,>B5,>5C,>BC,>92,>B9,>A2,>C7
BYTE >56,>F1,>4A,>E1,>8C,>69,>3B,>C5,>2D,>95,>23,>3A,>6D,>17
BYTE >37,>67,>76,>9B,>B0,>52,>DC,>12,>30,>2D,>CB,>76,>72,>93
BYTE >A5,>D6,>6A,>CB,>0A,>90,>DE,>46,>01,>2A,>FB,>16,>37,>26
BYTE >6D,>BF,>89,>5D,>1C,>17,>EC,>72,>C3,>72,>71,>62,>90,>C9
BYTE >24,>71,>C5,>09,>96,>CF,>1D,>9D,>24,>C7,>69,>79,>4B,>8E
BYTE >6B,>1C,>65,>F4,>3D,>D8,>29,>00,>01,>F0,>13,>73,>8E,>DC
BYTE >55,>08,>1B,>27,>38,>6A,>55,>09,>D8,>15,>E7,>98,>E4,>0B
BYTE >C3,>CD,>83,>ED,>A2,>24,>3F,>24,>2B,>56,>88,>96,>3A,>22
BYTE >BD,>58,>DE,>F9,>BB,>44,>F8,>64,>39,>6F,>A7,>E2,>C6,>92
BYTE >5D,>23,>6B,>B9,>3A,>21,>80,>50,>DE,>04,>80,>A9,>0A,>00
BYTE >08,>40,>87,>85,>0A,>E4,>B3,>72,>F4,>24,>21,>D4,>D3,>36
BYTE >C1,>AA,>94,>40,>3D,>AF,>14,>6F,>5B,>02,>F5,>A2,>DC,>22
BYTE >4D,>09,>D4,>8B,>34,>CB,>A4,>C5,>57,>CF,>D3,>2C,>DB,>18
BYTE >5F,>7D,>2D,>93,>76,>6C,>7C,>75,>CA,>1C,>2D,>89,>32,>75
BYTE >19,>0F,>D2,>C4,>04,>A0,>C3,>04,>80,>00,>D2,>5B,>27,>27
BYTE >37,>4B,>AC,>35,>53,>BC,>52,>35,>24,>C7,>4A,>F1,>52,>92
BYTE >F2,>1A,>33,>C5,>2B,>91,>DA,>BD,>C4,>14,>2F,>05,>49,>B7
BYTE >12,>5D,>BC,>18,>34,>3C,>53,>74,>F1,>43,>10,>B3,>2A,>C9
BYTE >26,>50,>46,>3B,>A6,>9C,>02,>00,>01,>84,>72,>27,>80,>75
BYTE >AA,>0A,>E0,>CE,>AE,>24,>25,>53,>C5,>84,>E4,>92,>A4,>80
BYTE >1B,>2D,>54,>4A,>52,>32,>56,>8D,>91,>2D,>49,>0E,>B8,>B5
BYTE >2E,>B5,>84,>B5,>51,>C4,>B8,>94,>E2,>A7,>40,>11,>1D,>B6
BYTE >08,>80,>52,>3E,>01,>58,>CE,>07,>00,>20,>80,>D0,>BA,>CE
BYTE >8E,>1E,>53,>6A,>CD,>04,>27,>7B,>88,>98,>16,>E3,>9C,>68
BYTE >20,>B2,>5B,>0E,>01,>88,>AE,>24,>00,>B4,>95,>C0,>00,>ED
BYTE >D5,>8B,>13,>93,>BA,>76,>51,>2E,>4E,>CA,>EA,>BA,>4D,>BA
BYTE >38,>A9,>A8,>CB,>15,>E9,>E4,>C6,>A2,>CE,>97,>64,>9C,>E7
BYTE >AD,>4B,>C4,>58,>26,>00,>0E,>15,>04,>C0,>2E,>1D,>08,>A0
BYTE >A5,>2B,>10,>80,>C6,>4C,>E3,>38,>AB,>A7,>D5,>90,>8D,>6D
BYTE >BC,>9D,>7F,>91,>4E,>4E,>70,>F2,>B6,>2D,>A5,>B8,>29,>C8
BYTE >6A,>8D,>95,>E2,>05,>6F,>A7,>35,>52,>82,>6F,>9C,>9D,>59
BYTE >9A,>05,>00,>60,>40,>CD,>E8,>C9,>6D,>8D,>4C,>B5,>12,>27
BYTE >B7,>06,>34,>EF,>8A,>EA,>FC,>22,>54,>A2,>2B,>36,>00,>80
BYTE >F3,>9C,>B5,>51,>4F,>DA,>CE,>F7,>46,>C7,>B4,>E9,>98,>C0
BYTE >C9,>F0,>D2,>70,>4C,>00,>24,>27,>08,>20,>49,>06,>10,>A0
BYTE >3A,>62,>00,>20,>00,>0B,>3A,>29,>AE,>5D,>1B,>86,>CB,>95
BYTE >A8,>24,>29,>A9,>32,>5D,>A2,>92,>B8,>62,>D2,>4E,>89,>6A
BYTE >A5,>8C,>29,>3B,>25,>AA,>9D,>C3,>A7,>64,>97,>B0,>55,>4E
BYTE >AF,>B2,>5D,>82,>52,>25,>24,>DB,>4C,>0A,>7B,>4B,>51,>E6
BYTE >36,>21,>EC,>2D,>C5,>98,>BB,>32,>20,>68,>56,>02,>B0,>12
BYTE >45,>00,>B1,>2D,>52,>60,>93,>BD,>4B,>D9,>2B,>81,>4B,>FA
BYTE >96,>25,>B7,>84,>3E,>E8,>6B,>07,>6D,>02,>E0,>66,>AD,>00
BYTE >55,>64,>8B,>17,>B2,>96,>6F,>49,>72,>5E,>F6,>B8,>DA,>1C
BYTE >46,>79,>41,>E3,>6A,>4B,>18,>11,>C8,>A0,>E5,>A3,>8A,>01
BYTE >80,>00,>60,>E4,>84,>D0,>6B,>AA,>A8,>90,>63,>22,>A7,>20
BYTE >AA,>42,>8E,>89,>22,>23,>F6,>09,>27,>26,>EA,>92,>49,>23
BYTE >ED,>B8,>68,>64,>67,>41,>AE,>4D,>00,>66,>24,>40,>01,>D6
BYTE >F2,>94,>B4,>16,>F6,>A8,>B6,>5C,>D2,>9C,>28,>6A,>42,>74
BYTE >49,>4B,>21,>AF,>0D,>D1,>25,>6D,>93,>25,>3A,>44,>95,>B8
BYTE >4F,>E6,>58,>B7,>9C,>A2,>E2,>41,>72,>C2,>B2,>4B,>12,>67
BYTE >C9,>51,>59,>04,>60,>CC,>97,>00,>9A,>71,>10,>40,>08,>6D
BYTE >67,>47,>43,>52,>ED,>52,>8C,>93,>15,>8B,>47,>DA,>21,>80
BYTE >E0,>E1,>00,>00,>00,>00,>00,>00,>00,>00,>00,>E0,>5A,>AD
BYTE >F9,>22,>52,>55,>08,>BC,>A1,>0E,>6B,>4D,>C5,>37,>31,>D6
BYTE >C9,>E5,>14,>5F,>B7,>F8,>F0,>96,>5A,>7C,>5D,>63,>C3,>5A
BYTE >4E,>F1,>83,>D7,>52,>5E,>D5,>25,>F0,>9A,>C7,>B4,>3C,>87
BYTE >50,>69,>39,>8F,>8C,>9B,>42,>AB,>F1,>DD,>2A,>5E,>09,>4B
BYTE >26,>57,>AB,>34,>C5,>6F,>93,>35,>26,>6C,>17,>AF,>14,>8E
BYTE >DC,>B4,>5C,>BC,>5A,>A8,>7D,>23,>96,>F3,>52,>E4,>F0,>29
BYTE >9B,>04,>E0,>CE,>1E,>00,>18,>20,>B2,>6D,>B1,>42,>92,>93
BYTE >4B,>85,>C5,>76,>59,>4F,>C7,>19,>3A,>DB,>26,>2B,>B7,>41
BYTE >4C,>00,>54,>33,>08,>00,>63,>1A,>01,>04,>2F,>23,>00,>B7
BYTE >9D,>C9,>31,>31,>D7,>D1,>A6,>06,>57,>E7,>5C,>81,>B2,>6E
BYTE >42,>71,>32,>81,>DB,>99,>4B,>B4,>36,>0F,>77,>C9,>04,>00
BYTE >B9,>0A,>00,>DC,>2E,>73,>95,>A3,>48,>15,>A9,>F8,>A6,>6C
BYTE >A3,>D8,>25,>F2,>B9,>B1,>1F,>AD,>14,>A9,>91,>0D,>F1,>8A
BYTE >4B,>60,>A3,>BF,>64,>3B,>2D,>BE,>0B,>F6,>3A,>2D,>B7,>78
BYTE >2E,>D8,>CB,>95,>52,>A7,>BB,>A0,>CB,>55,>8C,>09,>40,>A6
BYTE >15,>00,>01,>44,>2E,>27,>00,>F3,>ED,>CE,>D7,>29,>CE,>B4
BYTE >E5,>84,>D2,>05,>7D,>D7,>B6,>13,>0E,>1B,>F4,>2D,>D7,>4E
BYTE >8A,>6C,>B4,>D5,>0F,>D9,>C1,>71,>D1,>56,>DE,>69,>17,>CF
BYTE >47,>5B,>F9,>94,>53,>3C,>17,>6D,>E5,>47,>4A,>F1,>4C,>F6
BYTE >B3,>6B,>39,>C5,>37,>C9,>DF,>6B,>A4,>16,>DF,>79,>7B,>B7
BYTE >32,>EB,>42,>EB,>B4,>55,>D3,>9A,>49,>44,>B0,>11,>0F,>2A
BYTE >26,>32,>86,>CE,>AC,>AC,>96,>30,>67,>09,>B1,>0E,>52,>82
BYTE >92,>C8,>B2,>43,>6C,>09,>6B,>22,>CD,>31,>AA,>25,>AC,>1E
BYTE >BC,>8B,>99,>96,>20,>28,>9A,>4C,>E1,>1A,>02,>AB,>F8,>23
BYTE >D5,>75,>08,>8C,>92,>8F,>30,>D7,>25,>70,>51,>C3,>D7,>44
BYTE >97,>C0,>57,>89,>F8,>90,>5C,>02,>57,>B4,>FC,>55,>4A,>08
BYTE >6D,>56,>F7,>32,>38,>2E,>75,>CA,>34,>B4,>24,>12,>00,>E4
BYTE >4A,>02,>60,>5D,>46,>00,>1C,>73,>52,>10,>2D,>66,>8C,>CA
BYTE >0D,>81,>D7,>74,>91,>AC,>34,>05,>51,>C3,>79,>99,>AB,>14
BYTE >46,>03,>E7,>19,>AA,>4A,>18,>BC,>B4,>B7,>49,>2A,>51,>8A
BYTE >32,>D9,>26,>AA,>44,>31,>F2,>66,>BB,>A8,>12,>E5,>C4,>25
BYTE >55,>30,>4B,>54,>22,>54,>68,>31,>2E,>51,>8C,>52,>9E,>45
BYTE >AA,>44,>39,>72,>65,>19,>A5,>12,>E5,>4C,>95,>65,>94,>4B
BYTE >14,>3C,>B6,>87,>D3,>49,>91,>B3,>B8,>96,>CE,>24,>44,>56
BYTE >D3,>7A,>9A,>EA,>10,>3B,>05,>67,>A1,>AE,>55,>82,>8D,>BD
BYTE >A7,>39,>22,>00,>78,>3D,>08,>00,>AF,>16,>01,>20,>76,>21
BYTE >00,>E4,>1A,>04,>20,>1F,>83,>00,>E2,>A3,>11,>C0,>BD,>15
BYTE >02,>A8,>B7,>42,>80,>B4,>9A,>08,>90,>D6,>12,>01,>5A,>5B
BYTE >20,>C0,>38,>35,>04,>68,>2F,>8E,>00,>13,>C4,>11,>20,>BD
BYTE >04,>02,>6C,>60,>43,>80,>8D,>E2,>08,>D0,>41,>13,>01,>2A
BYTE >6A,>21,>40,>44,>0B,>04,>F0,>2C,>85,>00,>9E,>C3,>11,>C0
BYTE >B2,>39,>02,>58,>72,>47,>00,>6D,>59,>08,>00,>AB,>0E,>01
BYTE >60,>4F,>9B,>50,>0B,>EF,>09,>F0,>EB,>42,>A1,>7C,>5E,>55
BYTE >5B,>08,>85,>D2,>2F,>4E,>DD,>2E,>94,>4A,>3F,>AC,>38,>95
BYTE >D0,>19,>9D,>74,>A5,>5D,>C2,>E0,>65,>33,>8D,>4A,>89,>52
BYTE >92,>F2,>2C,>51,>25,>2E,>01,>C6,>33,>18,>94,>28,>47,>4A
BYTE >8B,>14,>54,>A2,>14,>B8,>23,>CC,>68,>8A,>A2,>83,>D3,>30
BYTE >79,>21,>D4,>86,>DF,>4D,>E3,>BB,>90,>46,>DF,>70,>75,>E6
BYTE >42,>A3,>24,>4A,>DB,>56,>8A,>FB,>53,>32,>92,>2C,>0C,>B0
BYTE >12,>0D,>01,>5C,>F1,>22,>00,>BB,>18,>04,>80,>D3,>4B,>00
BYTE >EC,>E3,>53,>54,>33,>78,>16,>4B,>2D,>51,>6B,>A0,>31,>62
BYTE >AE,>44,>AD,>A1,>C4,>AA,>95,>14,>25,>4B,>E6,>A3,>91,>52
BYTE >E8,>83,>B0,>E7,>C8,>49,>81,>F5,>12,>3E,>69,>C5,>F9,>22
BYTE >6A,>45,>8B,>12,>E1,>B3,>A4,>15,>63,>B6,>99,>43,>7D,>74
BYTE >9C,>59,>44,>00,>38,>31,>08,>80,>D3,>06,>01,>60,>C6,>20
BYTE >00,>AC,>5C,>04,>80,>11,>83,>00,>D0,>A2,>10,>A0,>79,>36
BYTE >01,>A8,>DA,>75,>89,>31,>B1,>CE,>1E,>D6,>85,>26,>E4,>39
BYTE >79,>B4,>14,>79,>6B,>13,>2C,>D1,>52,>14,>9C,>74,>B0,>44
BYTE >2B,>61,>F0,>BC,>A1,>61,>A5,>84,>21,>F2,>B9,>8D,>DD,>12
BYTE >C6,>24,>AB,>79,>B2,>4B,>E8,>83,>BC,>7E,>CA,>2E,>A1,>0F
BYTE >FA,>F2,>6E,>B9,>84,>21,>EA,>C9,>BB,>EC,>12,>A5,>C0,>2F
BYTE >1D,>92,>4A,>94,>02,>9F,>A4,>59,>4A,>51,>B0,>7C,>DC,>6A
BYTE >5A,>25,>2A,>48,>CA,>98,>68,>11,>D9,>CC,>0E,>13,>A6,>45
BYTE >64,>83,>04,>57,>58,>22,>00,>75,>E9,>04,>A0,>23,>2C,>84
BYTE >BA,>46,>39,>78,>E5,>E4,>AB,>5E,>E9,>A0,>B3,>93,>A7,>76
BYTE >84,>C0,>47,>76,>9E,>58,>99,>0C,>EF,>44,>F8,>EC,>39,>1B
BYTE >BD,>53,>04,>80,>47,>86,>00,>F4,>20,>11,>20,>1E,>19,>01
BYTE >C4,>16,>41,>00,>EB,>21,>08,>80,>C3,>0C,>01,>A0,>5B,>22
BYTE >80,>5F,>52,>04,>88,>A7,>42,>00,>79,>43,>8D,>27,>9F,>9B
BYTE >D0,>58,>4E,>BE,>3A,>9D,>01,>1F,>A7,>04,>EA,>74,>05,>7C
BYTE >94,>14,>A8,>97,>A9,>F0,>96,>55,>28,>7F,>26,>C3,>33,>46
BYTE >00,>78,>C4,>08,>A0,>8F,>01,>01,>68,>05,>22,>00,>3E,>15
BYTE >04,>C0,>9E,>29,>00,>5E,>33,>8B,>67,>6A,>AE,>83,>CD,>2D
BYTE >BE,>1E,>B5,>0E,>35,>CF,>F8,>72,>47,>03,>8D,>1D,>E6,>B3
BYTE >96,>69,>68,>71,>89,>CF,>4A,>76,>60,>58,>45,>00,>F9,>EE
BYTE >08,>60,>D1,>07,>01,>C2,>5B,>22,>40,>5B,>4D,>04,>68,>CB
BYTE >89,>00,>12,>B5,>10,>80,>83,>17,>02,>52,>E0,>64,>00,>B3
BYTE >F6,>0A,>90,>46,>BE,>04,>C1,>E1,>7A,>A6,>D8,>14,>06,>0B
BYTE >6F,>69,>4E,>53,>14,>1D,>AC,>86,>B9,>2B,>51,>08,>3C,>66
BYTE >46,>B7,>24,>AE,>D8,>47,>B6,>98,>92,>98,>E6,>6F,>ED,>72
BYTE >4A,>A2,>A7,>BF,>AD,>2A,>29,>89,>E9,>F6,>7A,>22,>3B,>24
BYTE >B6,>C9,>49,>33,>6D,>02,>C0,>26,>4D,>00,>9E,>B4,>08,>C0
BYTE >BC,>0E,>02,>68,>E1,>46,>00,>AE,>9A,>08,>90,>2E,>14,>01
BYTE >E0,>66,>21,>00,>FC,>6C,>E7,>45,>07,>19,>51,>56,>4A,>90
BYTE >03,>58,>CD,>98,>2D,>41,>B2,>10,>55,>45,>B5,>04,>31,>48
BYTE >58,>B5,>E4,>12,>78,>6F,>65,>55,>94,>5D,>AA,>AD,>86,>55
BYTE >31,>22,>00,>98,>39,>08,>80,>63,>0C,>01,>A0,>64,>21,>00
BYTE >6E,>6F,>04,>E0,>6C,>83,>00,>9C,>BC,>10,>40,>92,>17,>02
BYTE >58,>D0,>42,>00,>8E,>9E,>08,>20,>C1,>02,>01,>34,>5A,>00
BYTE >02,>48,>B6,>04,>00,>00,>80,>07
*;
*; nb bytes: [5300]
*;
	end

Edited by Kurt_Woloch
Link to comment
Share on other sites

...

 

Now this check is different from the one I actually typed off TI's own Editor/Assembler manual, where it goes like this:

coc @4000, R0
jne loopb

Actually, the TI manual puts this as "coc @H4000, R0", but I think this means the same. HOWEVER, it seems like they used the wrong addressing mode here. From what they're doing, it's clear that "4000" should be a mask against which R0 is checked. But "@H4000" or "@>4000" means that the CPU actually gets the word from memory address 4000 and uses that as the mask for checking R0. Address >4000 is actually the start of the 8k Peripheral card ROM. What it contains actually depends on which card is switched in.

 

You missed something from the E/A manual. The E/A code references a DATA statement (labelled "H4000") with the correct mask (>4000), thus correctly using the COC instruction:

...
H4000   DATA   >4000
...
COC	@H4000,R0
...

 

...lee

Link to comment
Share on other sites

Oh... sorry. OK, you're correct... I was assuming the "H" stands for "Hex", so I converted the "H4000" to ">4000" for asm994a. But I now left it as I wrote it above, because it works just as well.

 

Now, here's another one... today I've made yet another version of the demo which adds a bitmap picture I've made with my converter (which some of you may already know from other threads). It displays the dish that's talked about... Gulasch. I've also added some code to put the image on screen which isn't too complicated (about 112 bytes). Unfortunately the graphics data is pretty big at 12K making the whole program nearly 18K long (not the source code, the final program in memory). This causes some problems in asm994a which doesn't manage to put some of the files on the TIDisk. The OBJ file would be 67K long, and TI99Dir refuses to put this into a DSK image, probably because it would be over 255 blocks long. The COB file is a bit smaller at 31K, and although Asm994a refuses to put this to a TIDisk image either, it is possible to copy it with TI99Dir, but then the emulated Editor/Assembler in M.E.S.S. complains about "Illegal tag". In fact the same happens in Classic99 if I load the file there. It's only possible to load the larger OBJ file in Classic99, but that can't be put on a disk, as far as it seems. What can I do to make this run?

 

I've attached a ZIP file of the new version for you (without the TIDisk this time because this doesn't work).

 

Gulasch_with_pic.zip

Link to comment
Share on other sites

You can use the "Make" / "Save memory as program" in the Classic99 debugger menu. The program must be paused (F1).

 

Then, enter the following parameters:

High RAM: A000 to FFFF

Low RAM: 2000 to 3FFF

Start address: A024

 

Here is the converted EA5 program: GULASCH.zip

 

Even if I'm not a big fan of Gulasch, that's a nice program. ;)

  • Like 1
Link to comment
Share on other sites

Thank you very much! Now it runs fine on M.E.S.S. The only problem now is how to get this onto the real TI-99 since I still don't have a cable (as described above). Will probably have to think hard about this problem...

 

The answer is either here:

 

ftp://ftp.whtech.com/pc%20utilities/TI99-PC%203.2.1.%20Password%20%27TI99%27.rar

 

or here:

 

ftp://ftp.whtech.com/pc%20utilities/TI99-PC_3.0.0.zip

 

 

 

Gazoo

Link to comment
Share on other sites

Yes, I know about that program, but when I tried to employ it, I found out that the BIOS battery of my 386 computer (which is the only one having a 5 1/4" disk drive) was flat, so I replaced it, but the data was lost, and I don't know how to properly but it back to a working state so that the harddisk is recognized again.

 

Then I bought some cables supposed to connect my current PC's USB port to the TI's RS232 port, but I think I bought at least partially the wrong one because it doesn't work. But then Klaus offered to convert all my TI disks to PC data, so I didn't have a need for such a cable. But I suppose it would be useful for transferring that Assembler program now.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...