tschak909 Posted October 14, 2019 Share Posted October 14, 2019 does anyone have an SCP of Pinball Construction Set? -Thom Quote Link to comment Share on other sites More sharing options...
Zarxx Posted October 14, 2019 Share Posted October 14, 2019 Here you go Thom. Pinball Construction Set.zip Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 14, 2019 Share Posted October 14, 2019 @Zarxx *HUG* -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 14, 2019 Share Posted October 14, 2019 darn, those didn't work either. Am wondering if my belt-driven drive is simply too wobbly in timing to be useful for writing flux images with tight sector timings? sigh, I will try to find a TEAC FD-55B somewhere. -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 14, 2019 Share Posted October 14, 2019 (edited) Was able to write Jumpman from the a8 preservation archive just fine. No warnings. Tried both cuts of Lode Runner from the 1983 release, both having phantom sectors... $ a8rawconv.exe Lode\ Runner\ \(1983\)\(Broderbund\ Software\)\(US\).atx scp1:48tpi A8 raw disk conversion utility v0.92 Copyright (C) 2014-2016 Avery Lee, All Rights Reserved. Licensed under GNU General Public License, version 2 or later. WARNING: Track 5, sector 9: 1 phantom sector found. WARNING: Track 5, sector 8: 1 phantom sector found. WARNING: Track 5, sector 7: 1 phantom sector found. WARNING: Track 5, sector 6: 1 phantom sector found. WARNING: Track 5, sector 5: 1 phantom sector found. WARNING: Track 5, sector 4: 1 phantom sector found. WARNING: Track 5, sector 3: 1 phantom sector found. WARNING: Track 5, sector 2: 1 phantom sector found. Detected SCP port: COM4. Initializing SCP device. SCP version info: hardware version 1.1, firmware version 1.2 Detecting drive RPM... 300 RPM (actual 298.82 RPM) Writing track 0: 82648 bytes, delay 0.540 Writing track 1: 69130 bytes, delay 0.026 Erasing track 2 (6 revs) Erasing track 3 (6 revs) Erasing track 4 (6 revs) Writing track 5: 70308 bytes, delay 0.411 Writing track 6: 74898 bytes, delay 0.651 Writing track 7: 74870 bytes, delay 0.799 Writing track 8: 75138 bytes, delay 0.876 Writing track 9: 74756 bytes, delay 0.889 Writing track 10: 74960 bytes, delay 0.855 Writing track 11: 74852 bytes, delay 0.756 Writing track 12: 74486 bytes, delay 0.603 Writing track 13: 74874 bytes, delay 0.391 Writing track 14: 74522 bytes, delay 0.125 Writing track 15: 75014 bytes, delay 0.798 Writing track 16: 62270 bytes, delay 0.421 Erasing track 17 (6 revs) Erasing track 18 (6 revs) Erasing track 19 (6 revs) Writing track 20: 71802 bytes, delay 0.386 Writing track 21: 86988 bytes, delay 0.718 Writing track 22: 88174 bytes, delay 0.993 Writing track 23: 87936 bytes, delay 0.202 Writing track 24: 87074 bytes, delay 0.359 Writing track 25: 86572 bytes, delay 0.462 Writing track 26: 86898 bytes, delay 0.500 Writing track 27: 87010 bytes, delay 0.472 Writing track 28: 87156 bytes, delay 0.393 Writing track 29: 87242 bytes, delay 0.256 Writing track 30: 86508 bytes, delay 0.066 Writing track 31: 86972 bytes, delay 0.823 Writing track 32: 85366 bytes, delay 0.517 Writing track 33: 86632 bytes, delay 0.149 Writing track 34: 87052 bytes, delay 0.741 Writing track 35: 86996 bytes, delay 0.263 Writing track 36: 87062 bytes, delay 0.732 Writing track 37: 69150 bytes, delay 0.144 Erasing track 38 (6 revs) Writing track 39: 64406 bytes, delay 0.812 This one shows the title screen, and loads to a score display, but hangs. and the [a]lternate: $ a8rawconv.exe Lode\ Runner\ \(1983\)\(Broderbund\ Software\)\(US\)\[a\].atx scp1:48tpi A8 raw disk conversion utility v0.92 Copyright (C) 2014-2016 Avery Lee, All Rights Reserved. Licensed under GNU General Public License, version 2 or later. WARNING: Track 0, sector 17: 1 phantom sector found. WARNING: Track 39, sector 17: 1 phantom sector found. WARNING: Track 39, sector 15: 1 phantom sector found. WARNING: Track 39, sectors 3 and 5 overlapped during encoding. Encoded track may not work. Detected SCP port: COM4. Initializing SCP device. SCP version info: hardware version 1.1, firmware version 1.2 Detecting drive RPM... 300 RPM (actual 299.07 RPM) Writing track 0: 79582 bytes, delay 0.010 Writing track 1: 73932 bytes, delay 0.236 Writing track 2: 78644 bytes, delay 0.851 Writing track 3: 78030 bytes, delay 0.468 Writing track 4: 77378 bytes, delay 0.079 Writing track 5: 78274 bytes, delay 0.697 Writing track 6: 78422 bytes, delay 0.305 Writing track 7: 77454 bytes, delay 0.924 Writing track 8: 84530 bytes, delay 0.539 Writing track 9: 87256 bytes, delay 0.153 Writing track 10: 83090 bytes, delay 0.767 Writing track 11: 89236 bytes, delay 0.378 Writing track 12: 93198 bytes, delay 0.995 Writing track 13: 93140 bytes, delay 0.610 Writing track 14: 93046 bytes, delay 0.222 Writing track 15: 93224 bytes, delay 0.838 Writing track 16: 93020 bytes, delay 0.448 Writing track 17: 92972 bytes, delay 0.066 Writing track 18: 93114 bytes, delay 0.681 Writing track 19: 91632 bytes, delay 0.294 Writing track 20: 71930 bytes, delay 0.910 Writing track 21: 86938 bytes, delay 0.519 Writing track 22: 87964 bytes, delay 0.137 Writing track 23: 88070 bytes, delay 0.751 Writing track 24: 87076 bytes, delay 0.365 Writing track 25: 86698 bytes, delay 0.979 Writing track 26: 86920 bytes, delay 0.590 Writing track 27: 86946 bytes, delay 0.208 Writing track 28: 87260 bytes, delay 0.822 Writing track 29: 87286 bytes, delay 0.436 Writing track 30: 86504 bytes, delay 0.050 Writing track 31: 86932 bytes, delay 0.661 Writing track 32: 85308 bytes, delay 0.278 Writing track 33: 86814 bytes, delay 0.893 Writing track 34: 86996 bytes, delay 0.507 Writing track 35: 86960 bytes, delay 0.121 Writing track 36: 87062 bytes, delay 0.733 Writing track 37: 69200 bytes, delay 0.349 Writing track 38: 93220 bytes, delay 0.964 Writing track 39: 57850 bytes, delay 0.946 This fails immediately upon trying to check for the clusterfucked sector overlap 5 car pile-up on track 39... Lode Runner (1983)(Broderbund Software)(US).atx Lode Runner (1983)(Broderbund Software)(US)[a].atx Edited October 14, 2019 by tschak909 Quote Link to comment Share on other sites More sharing options...
Zarxx Posted October 14, 2019 Share Posted October 14, 2019 (edited) This might help from my backup guide when writing ATX files with 20-21 sector tracks. You can also do this to a specific track only by adding -t. a8rawconv p.atx scp0:96tpi -p 96 -t 5 Atari Disk Preservation and Restore Guide.pdf -p (50-200) - When writing an ATX and tracks larger than 19s are present you will need to add the -p command which adjusts the timing, otherwise sectors will be missing and you will see the message below. The general rule I’ve discovered is -p 96 for 20s and -p 91 for 21s. Ex - a8rawconv p.atx scp0:96tpi -p 96 Adjusting the timings can also have beneficial effects on some older disks, which will only normally run on an 810 drive. By using -p 100+ I’ve found you can sometimes create a copy which will run fine on a 1050. There are limits though, anything below 81 and too high will not produce a readable track. This means that you cannot write ATX files with very large tracks. Writing the raw SCP file is the only way to produce these. Edited October 14, 2019 by Zarxx added -t 1 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 14, 2019 Share Posted October 14, 2019 I was finally able to get the ATX of PCS to boot by setting -p to 101. -Thom 1 Quote Link to comment Share on other sites More sharing options...
pksw Posted January 15, 2020 Share Posted January 15, 2020 I have succesfully used a8rawconv to convert apple ii DOS 3.3 16 sector, SCP images (made using a greaseweazle device) to DSK. Thank you for writing this tool. I have not been able to make usable ProDOS disks though. I suspect this may be due to the different sector layout from Dos 3.3, as alluded to here snip: Specifically, on-disk sectors 0 to 15 of a DOS 3.3 image (ordinarily having the extension DSK or DO) should contain the contents of the image sectors at offsets: 0, 7, 14, 6, 13, 5, 12, 4, 11, 3, 10, 2, 9, 1, 8, 15 — i.e. increase by 7 at each step, and take the modulo by 15 if out of bounds. The on-disk sectors 0 to 15 of a Pro-DOS image (ordinarily PO) should contain the sectors at offsets 0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15 — i.e. increase by 8 each step, and take the modulo by 15 if out of bounds. Unfortunately my ability to manipulate the source code to a8rawconv to allow for the different offsets above isn't good enough to make a usable ProDOS disk. Quote Link to comment Share on other sites More sharing options...
phaeron Posted January 15, 2020 Author Share Posted January 15, 2020 1 hour ago, pksw said: I have not been able to make usable ProDOS disks though. I suspect this may be due to the different sector layout from Dos 3.3, as alluded to here snip: Specifically, on-disk sectors 0 to 15 of a DOS 3.3 image (ordinarily having the extension DSK or DO) should contain the contents of the image sectors at offsets: 0, 7, 14, 6, 13, 5, 12, 4, 11, 3, 10, 2, 9, 1, 8, 15 — i.e. increase by 7 at each step, and take the modulo by 15 if out of bounds. The on-disk sectors 0 to 15 of a Pro-DOS image (ordinarily PO) should contain the sectors at offsets 0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15 — i.e. increase by 8 each step, and take the modulo by 15 if out of bounds. Unfortunately my ability to manipulate the source code to a8rawconv to allow for the different offsets above isn't good enough to make a usable ProDOS disk. Yes, this is the issue. Currently, a8rawconv only writes out disk images in DOS 3.3 sector ordering and you need ProDOS ordering. The sector order lists you found are the pertinent ones, but the one in diska2.cpp is the reverse mapping, which can be produced from the above mappings with a little Python: >>> [[0, 7, 14, 6, 13, 5, 12, 4, 11, 3, 10, 2, 9, 1, 8, 15].index(x) for x in range(0,16)] [0, 13, 11, 9, 7, 5, 3, 1, 14, 12, 10, 8, 6, 4, 2, 15] >>> [[0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15].index(x) for x in range(0,16)] [0, 2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13, 15] Replace the kLogicalToPhysicalA2DOS array in diska2.cpp with the last mapping and see if that does the trick. If so, I can update the code to switch to that for .PO files. 2 Quote Link to comment Share on other sites More sharing options...
pksw Posted January 15, 2020 Share Posted January 15, 2020 (edited) 5 hours ago, phaeron said: Yes, this is the issue. Currently, a8rawconv only writes out disk images in DOS 3.3 sector ordering and you need ProDOS ordering. The sector order lists you found are the pertinent ones, but the one in diska2.cpp is the reverse mapping, which can be produced from the above mappings with a little Python: >>> [[0, 7, 14, 6, 13, 5, 12, 4, 11, 3, 10, 2, 9, 1, 8, 15].index(x) for x in range(0,16)] [0, 13, 11, 9, 7, 5, 3, 1, 14, 12, 10, 8, 6, 4, 2, 15] >>> [[0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15].index(x) for x in range(0,16)] [0, 2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13, 15] Replace the kLogicalToPhysicalA2DOS array in diska2.cpp with the last mapping and see if that does the trick. If so, I can update the code to switch to that for .PO files. I did try that, and managed to get the source to compile under the free download Visual Studio 2019 (I've never used it - I haven't programmed since turbo pascal 6 in the 90s, and never learnt C). However, the DSK file still doesn't seem to be right. Viewing the original disk and the converted one with a hex editor does find some blocks that are the same, and in the correct offsets. But there is a lot of junk data too, and text that I can see in the original disk, that just isn't in the converted DSK. I'll do a bit more testing using different media, to ensure it's not a bad read. I did find a reference to PRODOS encoding at https://www.bigmessowires.com/2011/10/02/crazy-disk-encoding-schemes/ and a manual for PRODOS at http://www.apple-iigs.info/doc/fichiers/beneathprodos.pdf Edited January 15, 2020 by pksw Quote Link to comment Share on other sites More sharing options...
Mr Robot Posted January 25, 2020 Share Posted January 25, 2020 I'm getting "Undefined symbols for architecture x86_64:" trying to compile this on a mac. wine a8rawconv.exe seems to work ok but it would be nice to get it native. "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -no_deduplicate -dynamic -arch x86_64 -macosx_version_min 10.14.0 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk -o a.out /var/folders/ch/hnn9fp4s7f7gtnls1_jb_k2m0000gn/T/compileall-87b033.o -L/usr/local/lib -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/10.0.1/lib/darwin/libclang_rt.osx.a Undefined symbols for architecture x86_64: "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(unsigned long, unsigned long, char const*) const", referenced from: parse_args(int, char**) in compileall-87b033.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(unsigned long, unsigned long, char const*, unsigned long) const", referenced from: bool std::__1::operator==<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) in compileall-87b033.o "std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from: std::__1::vector<SectorInfo, std::__1::allocator<SectorInfo> >::__vallocate(unsigned long) in compileall-87b033.o std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::__vallocate(unsigned long) in compileall-87b033.o std::__1::vector<SectorParser, std::__1::allocator<SectorParser> >::__recommend(unsigned long) const in compileall-87b033.o std::__1::vector<SectorParserMFM, std::__1::allocator<SectorParserMFM> >::__recommend(unsigned long) const in compileall-87b033.o std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::__recommend(unsigned long) const in compileall-87b033.o std::__1::vector<SectorInfo, std::__1::allocator<SectorInfo> >::__recommend(unsigned long) const in compileall-87b033.o std::__1::vector<SectorInfo*, std::__1::allocator<SectorInfo*> >::__vallocate(unsigned long) in compileall-87b033.o ... "std::logic_error::logic_error(char const*)", referenced from: std::length_error::length_error(char const*) in compileall-87b033.o "std::length_error::~length_error()", referenced from: std::__1::__throw_length_error(char const*) in compileall-87b033.o "std::__1::__next_prime(unsigned long)", referenced from: std::__1::__hash_table<std::__1::__hash_value_type<sift_sectors(TrackInfo&, int, std::__1::vector<SectorInfo*, std::__1::allocator<SectorInfo*> >&)::HashedSectorRef, unsigned int>, std::__1::__unordered_map_hasher<sift_sectors(TrackInfo&, int, std::__1::vector<SectorInfo*, std::__1::allocator<SectorInfo*> >&)::HashedSectorRef, std::__1::__hash_value_type<sift_sectors(TrackInfo&, int, std::__1::vector<SectorInfo*, std::__1::allocator<SectorInfo*> >&)::HashedSectorRef, unsigned int>, sift_sectors(TrackInfo&, int, std::__1::vector<SectorInfo*, std::__1::allocator<SectorInfo*> >&)::HashedSectorPred, true>, std::__1::__unordered_map_equal<sift_sectors(TrackInfo&, int, std::__1::vector<SectorInfo*, std::__1::allocator<SectorInfo*> >&)::HashedSectorRef, std::__1::__hash_value_type<sift_sectors(TrackInfo&, int, std::__1::vector<SectorInfo*, std::__1::allocator<SectorInfo*> >&)::HashedSectorRef, unsigned int>, sift_sectors(TrackInfo&, int, std::__1::vector<SectorInfo*, std::__1::allocator<SectorInfo*> >&)::HashedSectorPred, true>, std::__1::allocator<std::__1::__hash_value_type<sift_sectors(TrackInfo&, int, std::__1::vector<SectorInfo*, std::__1::allocator<SectorInfo*> >&)::HashedSectorRef, unsigned int> > >::rehash(unsigned long) in compileall-87b033.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long)", referenced from: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string<std::nullptr_t>(char const*) in compileall-87b033.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::assign(char const*)", referenced from: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(char const*) in compileall-87b033.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::replace(unsigned long, unsigned long, char const*)", referenced from: kf_read(RawDisk&, int, int, char const*, int, int, int) in compileall-87b033.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: kf_read(RawDisk&, int, int, char const*, int, int, int) in compileall-87b033.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from: parse_args(int, char**) in compileall-87b033.o kf_read(RawDisk&, int, int, char const*, int, int, int) in compileall-87b033.o ___cxx_global_var_init.1 in compileall-87b033.o ___cxx_global_var_init.185 in compileall-87b033.o "void std::__1::__sort<std::__1::__less<int, int>&, int*>(int*, int*, std::__1::__less<int, int>&)", referenced from: void std::__1::sort<int*, std::__1::__less<int, int> >(int*, int*, std::__1::__less<int, int>) in compileall-87b033.o "std::terminate()", referenced from: ___clang_call_terminate in compileall-87b033.o "typeinfo for std::length_error", referenced from: std::__1::__throw_length_error(char const*) in compileall-87b033.o "vtable for std::length_error", referenced from: std::length_error::length_error(char const*) in compileall-87b033.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "operator delete(void*)", referenced from: std::__1::__libcpp_deallocate(void*, unsigned long) in compileall-87b033.o "operator new(unsigned long)", referenced from: std::__1::__libcpp_allocate(unsigned long, unsigned long) in compileall-87b033.o "___cxa_allocate_exception", referenced from: std::__1::__throw_length_error(char const*) in compileall-87b033.o "___cxa_begin_catch", referenced from: ___clang_call_terminate in compileall-87b033.o "___cxa_free_exception", referenced from: std::__1::__throw_length_error(char const*) in compileall-87b033.o "___cxa_throw", referenced from: std::__1::__throw_length_error(char const*) in compileall-87b033.o "___gxx_personality_v0", referenced from: process_track_fm(RawTrack const&) in compileall-87b033.o process_track_mfm(RawTrack const&) in compileall-87b033.o parse_args(int, char**) in compileall-87b033.o bool std::__1::operator==<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) in compileall-87b033.o show_layout() in compileall-87b033.o sift_sectors(TrackInfo&, int, std::__1::vector<SectorInfo*, std::__1::allocator<SectorInfo*> >&) in compileall-87b033.o _main in compileall-87b033.o ... ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Quote Link to comment Share on other sites More sharing options...
cwilbar Posted January 27, 2020 Share Posted January 27, 2020 Anyone have any tips on compiling this under Linux ? scl enable devtoolset-6 'gcc -std=c++11 -fno-builtin -fpermissive -o a8rawconv a8rawconv.cpp' I receive tons of errors, like: a8rawconv.cpp:(.text+0x226): undefined reference to `g_verbosity' a8rawconv.cpp:(.text+0x62a): undefined reference to `SectorParser::Parse(unsigned int, unsigned char, unsigned char)' a8rawconv.cpp:(.text+0x72f): undefined reference to `SectorParser::Init(int, std::vector<unsigned int, std::allocator<unsigned int> > const*, float, TrackInfo*, unsigned int)' a8rawconv.cpp:(.text+0xc05): undefined reference to `SectorParserMFMAmiga::Parse(unsigned int, unsigned char, unsigned char)' a8rawconv.cpp:(.text+0xcde): undefined reference to `SectorParserMFM::Parse(unsigned int, unsigned char, unsigned char)' a8rawconv.cpp:(.text+0xe31): undefined reference to `SectorParserMFMAmiga::Init(int, int, std::vector<unsigned int, std::allocator<unsigned int> > const*, float, TrackInfo*, unsigned int)' a8rawconv.cpp:(.text+0xf02): undefined reference to `SectorParserMFM::Init(int, std::vector<unsigned int, std::allocator<unsigned int> > const*, float, TrackInfo*, unsigned int)' and many many more. I don't know C++, I know with C, I just used to make simple makefiles to compile all the files and link everything together, but if this is done for C++, since this is originating with Windows, makefiles are not used. Hoping someone else has done this. My system is still CentOS 6, so I had to use devtoolset in order to get access to a new enough gcc. Thanks in advance for any tips. Quote Link to comment Share on other sites More sharing options...
phaeron Posted January 27, 2020 Author Share Posted January 27, 2020 27 minutes ago, cwilbar said: Anyone have any tips on compiling this under Linux ? scl enable devtoolset-6 'gcc -std=c++11 -fno-builtin -fpermissive -o a8rawconv a8rawconv.cpp' You're compiling the wrong file. Per the manual, compile compileall.cpp instead. Quote Link to comment Share on other sites More sharing options...
cwilbar Posted January 27, 2020 Share Posted January 27, 2020 15 hours ago, phaeron said: You're compiling the wrong file. Per the manual, compile compileall.cpp instead. @phaeron , I tried that as well at one point, but I've since re-tried it with a clean unzip of the source. These are the errors (if I add "#include <math.h>" in front of the existing includes in a8rawconv.cpp, the floorf and fmod issues go away, but the others remain): In file included from compileall.cpp:4:0: a8rawconv.cpp: In function ‘void process_track_macgcr(const RawTrack&)’: a8rawconv.cpp:785:64: error: ‘floorf’ was not declared in this scope newsec.mEndingPosition -= floorf(newsec.mEndingPosition); ^ a8rawconv.cpp:803:1: error: jump to label ‘reject_data’ [-fpermissive] reject_data: ^~~~~~~~~~~ a8rawconv.cpp:685:15: note: from here goto reject_data; ^~~~~~~~~~~ a8rawconv.cpp:776:21: note: crosses initialization of ‘SectorInfo& newsec’ SectorInfo& newsec = tracksecs.back(); ^~~~~~ a8rawconv.cpp:774:15: note: crosses initialization of ‘std::vector<SectorInfo>& tracksecs’ auto& tracksecs = g_disk.mTracks[rawTrack.mSide][rawTrack.mTrack].mSectors; ^~~~~~~~~ a8rawconv.cpp:772:13: note: crosses initialization of ‘int vsn_time’ int vsn_time = time_basis - time_left; ^~~~~~~~ a8rawconv.cpp:752:14: note: crosses initialization of ‘bool checksumOK’ bool checksumOK = (checksumA == decCheckA && checksumB == decCheckB && checksumC == decCheckC); ^~~~~~~~~~ a8rawconv.cpp:747:17: note: crosses initialization of ‘uint8_t decCheckC’ uint8_t decCheckC = z3 + ((z0 << 6) & 0xc0); ^~~~~~~~~ a8rawconv.cpp:746:17: note: crosses initialization of ‘uint8_t decCheckB’ uint8_t decCheckB = z2 + ((z0 << 4) & 0xc0); ^~~~~~~~~ a8rawconv.cpp:745:17: note: crosses initialization of ‘uint8_t decCheckA’ uint8_t decCheckA = z1 + ((z0 << 2) & 0xc0); ^~~~~~~~~ a8rawconv.cpp:739:23: note: crosses initialization of ‘const uint8_t z3’ const uint8_t z3 = kGCR6Decoder[buf[175*4+3]]; ^~ a8rawconv.cpp:738:23: note: crosses initialization of ‘const uint8_t z2’ const uint8_t z2 = kGCR6Decoder[buf[175*4+2]]; ^~ a8rawconv.cpp:737:23: note: crosses initialization of ‘const uint8_t z1’ const uint8_t z1 = kGCR6Decoder[buf[175*4+1]]; ^~ a8rawconv.cpp:736:23: note: crosses initialization of ‘const uint8_t z0’ const uint8_t z0 = kGCR6Decoder[buf[175*4+0]]; ^~ a8rawconv.cpp:693:18: note: crosses initialization of ‘uint32_t invalid’ uint32_t invalid = 0; ^~~~~~~ a8rawconv.cpp:692:17: note: crosses initialization of ‘uint8_t carry’ uint8_t carry = 0; ^~~~~ a8rawconv.cpp:691:17: note: crosses initialization of ‘uint8_t checksumC’ uint8_t checksumC = 0; ^~~~~~~~~ a8rawconv.cpp:690:17: note: crosses initialization of ‘uint8_t checksumB’ uint8_t checksumB = 0; ^~~~~~~~~ a8rawconv.cpp:689:17: note: crosses initialization of ‘uint8_t checksumA’ uint8_t checksumA = 0; ^~~~~~~~~ a8rawconv.cpp: In function ‘void process_track_a2gcr(const RawTrack&)’: a8rawconv.cpp:1048:63: error: ‘floorf’ was not declared in this scope sector.mEndingPosition -= floorf(sector.mEndingPosition); ^ In file included from compileall.cpp:5:0: diskadf.cpp: In function ‘void read_adf(DiskInfo&, const char*, int)’: diskadf.cpp:36:42: error: ‘floorf’ was not declared in this scope sec.mPosition -= floorf(sec.mPosition); ^ In file included from compileall.cpp:6:0: diskatr.cpp: In function ‘void read_atr(DiskInfo&, const char*, int)’: diskatr.cpp:121:41: error: ‘floorf’ was not declared in this scope sec.mPosition -= floorf(sec.mPosition); ^ In file included from compileall.cpp:9:0: diskvfd.cpp: In function ‘void read_vfd(DiskInfo&, const char*, int, int)’: diskvfd.cpp:41:42: error: ‘floorf’ was not declared in this scope sec.mPosition -= floorf(sec.mPosition); ^ In file included from compileall.cpp:11:0: checksum.cpp: In function ‘uint16_t ComputeAddressCRC(uint32_t, uint32_t, uint32_t, uint32_t, bool)’: checksum.cpp:65:20: warning: narrowing conversion of ‘((sectorSize > 512u) ? 3 : ((sectorSize > 256u) ? 2 : ((sectorSize > 128u) ? 1 : 0)))’ from ‘in’ to ‘uint8_t {aka unsigned char}’ inside { } [-Wnarrowing] sectorSize > 512 ? 3 : sectorSize > 256 ? 2 : sectorSize > 128 ? 1 : 0 ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from compileall.cpp:12:0: disk.cpp: In function ‘void find_splice_point(int, RawTrack&, const TrackInfo&)’: disk.cpp:129:33: error: ‘floor’ was not declared in this scope splice_pos -= floor(splice_pos); ^ disk.cpp: In function ‘void sift_sectors(TrackInfo&, int, std::vector<SectorInfo*>&)’: disk.cpp:210:21: error: ‘fabsf’ was not declared in this scope if (fabsf(poserr) > 0.03f) ^ disk.cpp:231:33: error: ‘floorf’ was not declared in this scope position0 -= floorf(position0); ^ In file included from compileall.cpp:13:0: encode.cpp: In function ‘void encode_track(RawTrack&, TrackInfo&, int, double)’: encode.cpp:368:56: error: ‘fmod’ was not declared in this scope , fmod(encodingPosition / (200000000.0 / 6.0), 1.0) ^ In file included from compileall.cpp:17:0: rawdiskscpdirect.cpp: In function ‘void scp_direct_write(const RawDisk&, const char*, int, int, bool, bool)’: rawdiskscpdirect.cpp:225:32: error: ‘floor’ was not declared in this scope rot_delay -= floor(rot_delay); ^ In file included from compileall.cpp:21:0: sectorparser.cpp: In member function ‘bool SectorParser::Parse(uint32_t, uint8_t, uint8_t)’: sectorparser.cpp:80:30: error: ‘floorf’ was not declared in this scope mRotPos -= floorf(mRotPos); ^ sectorparser.cpp:190:60: error: ‘floorf’ was not declared in this scope newsec.mEndingPosition -= floorf(newsec.mEndingPosition); ^ sectorparser.cpp: In member function ‘bool SectorParserMFM::Parse(uint32_t, uint8_t, uint8_t)’: sectorparser.cpp:416:60: error: ‘floorf’ was not declared in this scope newsec.mEndingPosition -= floorf(newsec.mEndingPosition); ^ sectorparser.cpp: In member function ‘bool SectorParserMFMAmiga::Parse(uint32_t, uint8_t, uint8_t)’: sectorparser.cpp:601:59: error: ‘floorf’ was not declared in this scope newsec.mEndingPosition -= floorf(newsec.mEndingPosition); Quote Link to comment Share on other sites More sharing options...
phaeron Posted January 28, 2020 Author Share Posted January 28, 2020 8 hours ago, cwilbar said: @phaeron , I tried that as well at one point, but I've since re-tried it with a clean unzip of the source. These are the errors (if I add "#include <math.h>" in front of the existing includes in a8rawconv.cpp, the floorf and fmod issues go away, but the others remain): It looks like you might be using the weaktest version that I posted, which was a not very well tested dump from the dev tree. The math.h include is a correct fix, the initialization errors are a C++ compliance issue that would take a bit more to fix. Not sure why you're seeing that error if you're compiling with -fpermissive, but in any case I'd recommend using the last released version instead, 0.92: Quote Link to comment Share on other sites More sharing options...
cwilbar Posted January 31, 2020 Share Posted January 31, 2020 @phaeron Tried again with 0.92. Had to add include for math.h, everything worked much better, until it went to link.... $ scl enable devtoolset-6 'gcc -std=c++11 -fno-builtin -o a8rawconv -lm -lstdc++ compileall.cpp' /tmp/ccgQtpzF.o: In function `std::_Hashtable<sift_sectors(TrackInfo&, int, std::vector<SectorInfo*, std::allocator<SectorInfo*> >&)::HashedSectorRef, std::pair<sift_sectors(TrackInfo&, int, std::vector<SectorInfo*, std::allocator<SectorInfo*> >&)::HashedSectorRef const, unsigned int>, std::allocator<std::pair<sift_sectors(TrackInfo&, int, std::vector<SectorInfo*, std::allocator<SectorInfo*> >&)::HashedSectorRef const, unsigned int> >, std::__detail::_Select1st, sift_sectors(TrackInfo&, int, std::vector<SectorInfo*, std::allocator<SectorInfo*> >&)::HashedSectorPred, sift_sectors(TrackInfo&, int, std::vector<SectorInfo*, std::allocator<SectorInfo*> >&)::HashedSectorPred, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<sift_sectors(TrackInfo&, int, std::vector<SectorInfo*, std::allocator<SectorInfo*> >&)::HashedSectorRef const, unsigned int>, true>*)': compileall.cpp:(.text+0xfc76): undefined reference to `std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const' collect2: error: ld returned 1 exit status I have yet too determine why this one has happening, hopefully you or someone else has seen this one.... Quote Link to comment Share on other sites More sharing options...
phaeron Posted February 1, 2020 Author Share Posted February 1, 2020 12 hours ago, cwilbar said: I have yet too determine why this one has happening, hopefully you or someone else has seen this one.... Not sure on this one, but your build line is definitely more complex than mine, which is just: g++ -std=c++11 compileall.cpp I realized that I was using a fairly old version of gcc and updated my WSL installation to Ubuntu 18.04, but couldn't get this error either with gcc 7.4.0 or Clang 6.0.0. All I got was the math.h issue. It's a link error instead of a compile error, which is a bit odd. Quote Link to comment Share on other sites More sharing options...
cwilbar Posted February 2, 2020 Share Posted February 2, 2020 (edited) OK, I have 0.92 compiling now. For those who want to compile this on CentOS6/RH6, you need scl (because RH 'freezes' software versions on the major release, and they are old). On CentOS6, this is installed with: yum install centos-release-scl yum install devtoolset-6 The process would be similar for RH6, but you'll need to look up to see how it differs. Once you have scl and devtoolset-6, add an "#include <math.h>" line in a8rawconv.cpp, and then use this command to compile it: scl enable devtoolset-6 'g++ -std=c++11 compileall.cpp -o a8rawconv' using g++ rather than gcc the linking behaves differently, and it compiles and links w/o error. Not sure why I didn't try g++ command.... I was going by some site that talked about using scl, and they were using gcc command lines there. I've even been able to compile the development ("weaktest") version as well as 0.92. Edited February 2, 2020 by cwilbar Quote Link to comment Share on other sites More sharing options...
Mr Robot Posted February 2, 2020 Share Posted February 2, 2020 Can confirm using g++ rather than gcc and the command line "g++ -std=c++11 compileall.cpp -o a8rawconv" works on macOS as well. Good work @cwilbar! Quote Link to comment Share on other sites More sharing options...
Savetz Posted February 15, 2020 Share Posted February 15, 2020 I'm trying to set up my Supercard Pro for the first time, connected to my Mac (running Mojave) using a8rawconv. I'm getting "unable to open serial port." Is there a driver to install or something to do to set up serial? ./a8rawconv -p 104 scp0:48tpi backed_up_disk.atr A8 raw disk conversion utility v0.9 Copyright (C) 2014-2015 Avery Lee, All Rights Reserved. Licensed under GNU General Public License, version 2 or later. Unable to open serial port: /dev/cu.usbserial-SCP-JIM Thanks Kevin Quote Link to comment Share on other sites More sharing options...
ijor Posted February 15, 2020 Share Posted February 15, 2020 1 hour ago, Savetz said: A8 raw disk conversion utility v0.9 Copyright (C) 2014-2015 Avery Lee, All Rights Reserved. Licensed under GNU General Public License, version 2 or later. Unable to open serial port: /dev/cu.usbserial-SCP-JIM Seems like you didn't install the drivers. Install the manufacturer SCP software Quote Link to comment Share on other sites More sharing options...
Savetz Posted February 15, 2020 Share Posted February 15, 2020 I can't find Mac drivers. One thread says they exist, but everything I find is for Windows. —Kevin Quote Link to comment Share on other sites More sharing options...
Farb Posted February 15, 2020 Share Posted February 15, 2020 (edited) @Savetz, I'm guessing you are running the version of a8rawconv that I compiled for Mac? When I initially tested, the SuperCard Pro was available on serial port /dev/cu.usbserial-SCP-JIM (no drivers needed). It is possible that it changed in newer versions of MacOS. From a Terminal window, type: ls /dev/*usb* and see what you get back. Edited February 15, 2020 by Farb 1 Quote Link to comment Share on other sites More sharing options...
Savetz Posted February 15, 2020 Share Posted February 15, 2020 6 hours ago, Farb said: @Savetz, I'm guessing you are running the version of a8rawconv that I compiled for Mac? When I initially tested, the SuperCard Pro was available on serial port /dev/cu.usbserial-SCP-JIM (no drivers needed). It is possible that it changed in newer versions of MacOS. From a Terminal window, type: ls /dev/*usb* and see what you get back. Yes, I'm using the pre-compiled version. $ ls /dev/*usb* ls: /dev/*usb*: No such file or directory thanks —K Quote Link to comment Share on other sites More sharing options...
Farb Posted February 15, 2020 Share Posted February 15, 2020 And, just to be certain, you ran this with the SuperCard Pro board plugged in via USB? At least in prior versions of MacOS, a file would appear in the /dev directory when the USB cable was plugged in and disappear when it was unplugged. We need to figure out what device shows up. I'll check with my Mac notebook shortly and see if I see anything. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.