orao103: Support new TAP format and format now done properly

This commit is contained in:
Miodrag Milanovic 2020-12-06 19:04:05 +01:00
parent bb9f9d297d
commit 5e23dc37a8
2 changed files with 19 additions and 12 deletions

View File

@ -11,16 +11,18 @@
#define ORAO_WAV_FREQUENCY 44100
#define WAVE_HIGH -32768
#define WAVE_LOW 0
#define WAVE_HIGH -24576
#define WAVE_LOW 24576
#define ORAO_WAVE_ONE 24
#define ORAO_WAVE_ZERO 11
#define ORAO_WAVE_ONE 17
#define ORAO_WAVE_ZERO 9
#define ORAO_HEADER_SIZE 360
static int16_t wave_data; // FIXME: global variables prevent multiple instances
static int len;
static int len;
static int startpos;
static bool newformat;
static void orao_output_wave( int16_t **buffer, int length ) {
if ( buffer == nullptr ) {
@ -41,7 +43,13 @@ static int orao_cas_to_wav_size( const uint8_t *casdata, int caslen ) {
return -1;
}
size = 0;
for (i=ORAO_HEADER_SIZE;i<caslen-ORAO_HEADER_SIZE;i++) {
startpos = 0;
newformat = true;
if (casdata[0]==0x68 && casdata[1]==0x01 && casdata[2]==0x00) {
startpos = ORAO_HEADER_SIZE;
newformat = false;
}
for (i=startpos;i<caslen-startpos;i++) {
for (j=0;j<8;j++) {
b = (casdata[i] >> j) & 1;
if (b==0) {
@ -56,13 +64,14 @@ static int orao_cas_to_wav_size( const uint8_t *casdata, int caslen ) {
}
static int orao_cas_fill_wave( int16_t *buffer, int length, uint8_t *bytes ) {
int i,j,size;
int i,j,size,k;
uint8_t b;
size = 0;
if (bytes == nullptr) return -1;
for (i=ORAO_HEADER_SIZE;i<len-ORAO_HEADER_SIZE;i++) {
for (i=startpos;i<len-startpos;i++) {
for (j=0;j<8;j++) {
b = (bytes[i] >> j) & 1;
k = newformat ? (7-j) : j;
b = (bytes[i] >> k) & 1;
if (b==0) {
wave_data = WAVE_LOW;
orao_output_wave(&buffer,ORAO_WAVE_ZERO);

View File

@ -14,12 +14,10 @@ Ctrl-V turns on keyclick
Ctrl-S turns on reversed video
BC starts BASIC. orao103: EXIT to quit. orao: unknown how to quit.
To load use LMEM""
Todo:
- When pasting, shift key doesn't work
- orao103: loads its own tapes, but can't load software items
- orao: can't load anything
****************************************************************************/