Does Oric/Atmos have any kind of command or utility that will catalogue a tape? The BBC Micro had an inbuilt command *CAT that would list the names of the programs on the tape. I have a bunch of user-made C60s and C90s that I want to verify the contents of, and it would help a lot to be able to do this.

I'm fairly sure Oric-1 didn't have a *CAT type of command inbuilt, but did Atmos? Or did anyone release software that would essentially do the same job?

I remember when I was looking for a home computer. I had the ZX Spectrum on mind, though back then, the games were quite primitive. I had a crush somewhat for the Atari, but it was too expensive. I saw a C64 too, but it did not look very nice and was also very expensive, its Basic was terrible, and I only tried a couple of horrible games. Yeah, I got the wrong impression

In the end, it was my father who came with an Oric-1 as a surprise. Nobody had one, and the lack of games back then sent me down the programming alley

I've had a go with CassCat and Lcat7 but so far haven't managed to get them to work for me. CassCat hangs at the point where you play the tape and TRON gets you to line 240 (in Oricutron, not tried on real Oric). LcatK7 says "break on byte #1302", but I don't know what it means or how to fix it.

There was a program in the PD list that sent a catalogue to the printer. Tapecat.

Where would I find this PD list? EDIT: I found it! And it looks like it works! Thank you

I'll have a look at the listings in Théoric and Oric Computing and see if I can muddle my way through the machine code. Back in the day I was fine in BASIC but my brain did an "undefined statement" error every time it was presented with machine code Do you just type that stuff in as it is printed in the magazine? Or go via an assembler?

Loved the video, dBug! I was about 12 when my parents bought our Oric so I wasn't really involved in how they decided which one to go for. My dad had access to computers at school though, he brought home a Commodore PET and a ZX81 (with RAM pack!) for a short while each, I think to prepare classwork on, and we were able to have a go. The PET would crash when it ran out of memory, about 5 lines of BASIC was its max. I think they liked the proper keyboard of the Oric vs the keyword keys of the ZX computers. We always felt the Oric was a better computer but less well supported and marketed than the Spectrum. It's lovely to see some of our old programs and games come back to life off these tapes!

Run that, then CSAVE "WHATEVER", A#9700, E#9900 to save the data block.

OCR errors aside (if it's from the Oric Computing source I think it's from, OCR errors are quite likely because the dotmatrix print quality is already so-so, the OCR used is not the sharpest, and I gave up all hope of ever getting it to take on board my suggestions, even though manual correction and learning is theoretically possible ...) you had to make sure you typed every byte exactly right!

Run that, then CSAVE "WHATEVER", A#9700, E#9900 to save the data block.

Aha! suddenly it makes sense We used to use POKE all the time and I understood it to be a way of getting a value into an address in memory. But nobody said a machine code program is practically built of POKEs. I notice that for 9700, the corresponding value is A59C, so I guess they go in pairs? 9700 would have A5, 9701 has 9C? And I take it none of the addresses in the block get missed out?

I notice that for 9700, the corresponding value is A59C, so I guess they go in pairs? 9700 would have A5, 9701 has 9C? And I take it none of the addresses in the block get missed out?

Not necessarily in pairs, in the 6502 instructions can occupy one, two or three bytes.

In this case, A5 9C maps to "LDA $9C" which means "LoaD the Accumulator register with whatever you find in memory at the zero page address $9C", but if you look down the code, there is "#08" which is just the one byte value for the "PHP" instruction (PusH P).

The whole thing is very logical, and also very easy to get wrong: Since it's just a bunch of bytes, if you get one wrong, you either make the CPU use the wrong instruction, or the wrong address, and a particular value only has a meaning in a particular context, for example A5 A5 would just be "LDA $A5" (Load A with what is at the address $A5 in zero page).

Iss, thank you very much for doing this! I don't really know what I'm doing but I went to the OSDK and used XA on a text file (isscat.txt) of this code. Is command-line xa isscat.txt -o isscat.s -e errorlog.txt correct usage? I got this as errorlog.txt output: