OSDK 1.21

Questions, bug reports, features requests, ... about the Oric Software Development Kit. Please indicate clearly in the title the related element (OSDK for generic questions, PictConv, FilePack, XA, Euphoric, etc...) to make it easy to locate messages.

User avatar
Dbug
Site Admin
Posts: 5038
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

OSDK 1.21

Post by Dbug »

It's been more than two years since the last OSDK version, so here it is, OSDK 1.21.
What would be nice is if one of you could download it and try it with your stuff that worked in 1.20 to see if there are any regressions.

Here is the full list of changes:

  • Upgraded Linker to the version 1.1:
    • The 'Unresolved external: ' now also specify the filename and line number of the first place where the symbol was requested, as well as the total number of references.
    • Added a '-i' option to provide alternative include file paths
    • Added support for a '#pragma osdk replace_characters' directive used to perform localization of texts (experimental)
  • Upgraded FloppyBuilder to version 1.7:
    • Added statistics information about the disk usage in the output window
    • Added the number of file entries to the disk usage statistics in the output window
    • Added a {FileDiskOffset} macro variable to determine where on the disk a specific file is located
    • Added the time and date of when the header file was created, as well as the disk geometry parameters
    • Modified the gap values for 18 sectors per track format to solve compatibility issues with Cumulus
    • The tool should be reporting disk usage conditions more effectively.
  • Upgraded MemMap to the version 1.1:
    • Restructured a bit the tool to use a main class to embed the parameters instead of using globals
    • Modified the html to make it easy to skin the appearance using css (using a 'memmap' class on the table elements)
    • Added the flag -s to provide a way to add a list of the biggest offenders sorted by decreasing size
    • Fixed a crash caused by an incorrect modification of the file resulting of some symbol files concatenation
  • Upgraded Bas2Tap to version 2.3, with a fix for 'lastsep'
  • Upgraded XA to version 2.2.7 with an extended syntax for the #print command to allow displaying information on a single line
  • Upgraded Header to version 1.1: If the source file starts by SEDORIC then the 12 first bytes are automatically ignored when the tape is converted
  • Upgraded PictConv to version 1.1: Added the -f3 mode to convert atari images into Shifter palettes (Sommarhack Zero Bitplane hack)
  • Added new environment variables:
    • OSDKTAP2DSKPARAMS, which can be used to pass any arbitrary set of parameters to TAP2DSK when the build script is called
    • OSDKVERBOSITY, which can be used to control the amount of text shown during the build
    • OSDK_CUSTOM_STACK can be used to disable the automatic creation of the osdk stack if you want to implement it yourself
    • OSDK_BUILD_START, OSDK_BUILD_END and OSDK_BUILD_TIME are used internally to monitor the time taken to build things
  • Added new sample programs:
    • Added the BASIC flood fill sample program from Geoff Phillips book 'Oric Atmos and Oric 1 Graphics and Machine code techniques' in sample\basic\paint
    • Added the C equivalent flood fill routine in sample\c\paint
    • Updated the documentation with the modified Oricutron commands, and fixed the HTML to actually show the parameters
User avatar
ibisum
Wing Commander
Posts: 1972
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: OSDK 1.21

Post by ibisum »

Hmm ..

With OSDK 1.21 (failed build):

Code: Select all

wine osdk_build.bat && pkill oricutron
wineserver: using server-side synchronization.
0074:err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\wineusb": c0000142
003c:fixme:service:scmdatabase_autostart_services Auto-start service L"wineusb" failed to start: 1114
009c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
009c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
009c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
009c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
Building the program SOUNDTOY at adress $550 [OSDK 1.20]
Compiling toy.C
  - preprocess
00f4:err:environ:init_peb starting L"C:\\osdk\\Bin\\cpp.exe" in experimental wow64 mode
In file included from toy.c:19:
gencode.h:31: warning: `COLR2' redefined
gencode.h:27: warning: this is the location of the previous definition
  - compile
00fc:err:environ:init_peb starting L"C:\\osdk\\Bin\\Compiler.exe" in experimental wow64 mode
00fc:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFA, 0012FE80
  - convert C to assembly code
0104:err:environ:init_peb starting L"C:\\osdk\\Bin\\cpp.exe" in experimental wow64 mode
  - cleanup output
010c:err:environ:init_peb starting L"C:\\osdk\\Bin\\macrosplitter.exe" in experimental wow64 mode
010c:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFA, 0012FE78
Assembling soundtoy.S
Z:soundtoy.s
Assembling picture.S
Z:picture.s
Assembling qrandom.S
Z:qrandom.s
Compiling attrsyn.C
  - preprocess
012c:err:environ:init_peb starting L"C:\\osdk\\Bin\\cpp.exe" in experimental wow64 mode
  - compile
0134:err:environ:init_peb starting L"C:\\osdk\\Bin\\Compiler.exe" in experimental wow64 mode
0134:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFA, 0012FE80
  - convert C to assembly code
013c:err:environ:init_peb starting L"C:\\osdk\\Bin\\cpp.exe" in experimental wow64 mode
  - cleanup output
0144:err:environ:init_peb starting L"C:\\osdk\\Bin\\macrosplitter.exe" in experimental wow64 mode
0144:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFA, 0012FE78
Assembling simpio1.S
Z:simpio1.s
Linking
0154:err:environ:init_peb starting L"C:\\osdk\\Bin\\Link65.exe" in experimental wow64 mode
0154:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFA, 0012FE98
Assembling
015c:err:environ:init_peb starting L"C:\\osdk\\Bin\\Xa.exe" in experimental wow64 mode
015c:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFA, 0012FE98
Creating TAPE image SOUNDTOY.TAP
0164:err:environ:init_peb starting L"C:\\osdk\\Bin\\Header.exe" in experimental wow64 mode
File 'build\SOUNDTOY.tap' is 24955 bytes long (14 bytes header and 24941 bytes of data)
0164:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFA, 0012FD1C
016c:err:environ:init_peb starting L"C:\\osdk\\Bin\\taptap.exe" in experimental wow64 mode
Division by zero error.
Division by zero error.
Division by zero error.
Division by zero error.
Division by zero error.
Division by zero error.
Expected an operand.
Expected an operand.
Expected an operand.
Syntax error
Syntax error
Syntax error
Build of SOUNDTOY.tap finished in 3660.100s

With older OSDK 1.17 (successful build):

Code: Select all

 make                                                                   25-04-19 - 20:10:14
wine osdk_build.bat && pkill oricutron
wineserver: using server-side synchronization.
0074:err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\wineusb": c0000142
003c:fixme:service:scmdatabase_autostart_services Auto-start service L"wineusb" failed to start: 1114
009c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
009c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
009c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
009c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
Building the program SOUNDTOY at adress $550 [OSDK 1.15]
Compiling toy.C
  - preprocess
00f4:err:environ:init_peb starting L"C:\\OSDK\\Bin\\cpp.exe" in experimental wow64 mode
In file included from toy.c:19:
gencode.h:31: warning: `COLR2' redefined
gencode.h:27: warning: this is the location of the previous definition
  - compile
00fc:err:environ:init_peb starting L"C:\\OSDK\\Bin\\Compiler.exe" in experimental wow64 mode
00fc:fixme:heap:RtlSetHeapInformation handle 00000000, info_class 1, info 00000000, size 0 stub!
  - convert C to assembly code
0104:err:environ:init_peb starting L"C:\\OSDK\\Bin\\cpp.exe" in experimental wow64 mode
  - cleanup output
010c:err:environ:init_peb starting L"C:\\OSDK\\Bin\\macrosplitter.exe" in experimental wow64 mode
010c:fixme:heap:RtlSetHeapInformation handle 00000000, info_class 1, info 00000000, size 0 stub!
Assembling soundtoy.S
Z:soundtoy.s
Assembling picture.S
Z:picture.s
Assembling qrandom.S
Z:qrandom.s
Compiling attrsyn.C
  - preprocess
012c:err:environ:init_peb starting L"C:\\OSDK\\Bin\\cpp.exe" in experimental wow64 mode
  - compile
0134:err:environ:init_peb starting L"C:\\OSDK\\Bin\\Compiler.exe" in experimental wow64 mode
0134:fixme:heap:RtlSetHeapInformation handle 00000000, info_class 1, info 00000000, size 0 stub!
  - convert C to assembly code
013c:err:environ:init_peb starting L"C:\\OSDK\\Bin\\cpp.exe" in experimental wow64 mode
  - cleanup output
0144:err:environ:init_peb starting L"C:\\OSDK\\Bin\\macrosplitter.exe" in experimental wow64 mode
0144:fixme:heap:RtlSetHeapInformation handle 00000000, info_class 1, info 00000000, size 0 stub!
Assembling simpio1.S
Z:simpio1.s
Linking
Z:\Users\j\Documents\Development\retro\oric\development\soundToy
0154:err:environ:init_peb starting L"C:\\OSDK\\Bin\\Link65.exe" in experimental wow64 mode
0154:fixme:heap:RtlSetHeapInformation handle 00000000, info_class 1, info 00000000, size 0 stub!
Assembling
015c:err:environ:init_peb starting L"C:\\OSDK\\Bin\\Xa.exe" in experimental wow64 mode
015c:fixme:heap:RtlSetHeapInformation handle 00000000, info_class 1, info 00000000, size 0 stub!
Creating final program SOUNDTOY.TAP
0164:err:environ:init_peb starting L"C:\\OSDK\\Bin\\Header.exe" in experimental wow64 mode
0164:fixme:heap:RtlSetHeapInformation handle 00000000, info_class 1, info 00000000, size 0 stub!
File 'build\SOUNDTOY.tap' is 24955 bytes long (14 bytes header and 24941 bytes of data)
016c:err:environ:init_peb starting L"C:\\OSDK\\Bin\\taptap.exe" in experimental wow64 mode
Build of SOUNDTOY.tap finished
Not sure whats going on yet, will dig in and report back ..
User avatar
Dbug
Site Admin
Posts: 5038
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OSDK 1.21

Post by Dbug »

It looks like it's taptap.exe not working, or is it something else?
User avatar
ibisum
Wing Commander
Posts: 1972
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: OSDK 1.21

Post by ibisum »

Yes, its taptap, still looking at what it could be ..
User avatar
Dbug
Site Admin
Posts: 5038
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OSDK 1.21

Post by Dbug »

Weird, taptap.exe did not change between 1.17 and 1.21, it's the exact same executable.
image_2025-04-19_203240984.png
And in the make.bat it's called the same way as well:
image_2025-04-19_203342414.png
User avatar
Dbug
Site Admin
Posts: 5038
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OSDK 1.21

Post by Dbug »

Btw, one thing that could be interesting is to bisect: Since we know 1.17 works, maybe try 1.19, if it also fails try 1.18, if it works try 1.20, so we can find which specific version caused the failure.
User avatar
ibisum
Wing Commander
Posts: 1972
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: OSDK 1.21

Post by ibisum »

Yes, I will try to work through the versions and see where things go awray - ran out of time for it last night, will give it another bash tonight. I'm not doing anything special in my osdk_config.bat - just combining C and Assembly files in a very rudimentary project. Will investigate and report back when I have found more details.
User avatar
waskol
Flight Lieutenant
Posts: 430
Joined: Wed Jun 13, 2007 8:20 pm
Location: FRANCE, Paris

Re: OSDK 1.21

Post by waskol »

Hello, I am the creator of tatap.
Taptap requires valid dos/windows path.
instead of "taptap ren build\file.tap"

have you tried "taptap ren .\build\file.tap" instead ?

Taptap source code is on my github :
https://github.com/DJChloe/taptap

Example in Oric Kong sources :
https://github.com/DJChloe/Orickong_C/b ... ke_all.bat

cheers,
Chloé
User avatar
waskol
Flight Lieutenant
Posts: 430
Joined: Wed Jun 13, 2007 8:20 pm
Location: FRANCE, Paris

Re: OSDK 1.21

Post by waskol »

I found the problem...

you coded :

Code: Select all

%OSDKB%\taptap.exe ren build\%OSDKNAME%.tap %OSDKTAPNAME% 0
it should be :

Code: Select all

%OSDKB%\taptap.exe ren 0 build\%OSDKNAME%.tap %OSDKTAPNAME%
or
%OSDKB%\taptap.exe ren 0 from build\%OSDKNAME%.tap to %OSDKTAPNAME%
more over, please use and try this updated version of taptap instead :
https://workupload.com/file/e4mupxJ785b
User avatar
ibisum
Wing Commander
Posts: 1972
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: OSDK 1.21

Post by ibisum »

Thanks for checking into this .. I’ll have some Oric hacking time this weekend, will update to the version of taptap.exe you suggest, modify my build scripts and try all this again. Maybe this is something for the OSDK in general, though?
User avatar
Dbug
Site Admin
Posts: 5038
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OSDK 1.21

Post by Dbug »

Í will check that during the week-end, need to find when it was changed, and why.
User avatar
Dbug
Site Admin
Posts: 5038
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OSDK 1.21

Post by Dbug »

waskol wrote: Fri May 09, 2025 2:28 am I found the problem...

you coded :

Code: Select all

%OSDKB%\taptap.exe ren build\%OSDKNAME%.tap %OSDKTAPNAME% 0
it should be :

Code: Select all

%OSDKB%\taptap.exe ren 0 build\%OSDKNAME%.tap %OSDKTAPNAME%
or
%OSDKB%\taptap.exe ren 0 from build\%OSDKNAME%.tap to %OSDKTAPNAME%
more over, please use and try this updated version of taptap instead :
https://workupload.com/file/e4mupxJ785b
Are you sure it's not your new version using this new syntax?
I've checked all the OSDK versions from 1.14 to 1.21 and they all have the same exact line of code:

Code: Select all

%OSDKB%\header.exe %OSDKHEAD% build\final.out build\%OSDKNAME%.tap %OSDKADDR%
%OSDKB%\taptap.exe ren build\%OSDKNAME%.tap %OSDKTAPNAME% 0
image_2025-05-09_215007527.png
Bonus question, could you tell me what the changes in taptap are, and why the one in the OSDK is 95 KILO BYTES and why the new version is over 1 MEGA BYTES
image_2025-05-09_215349246.png
User avatar
iss
Wing Commander
Posts: 1837
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: OSDK 1.21

Post by iss »

Possible sources of the size difference (95k vs 1M): 32/64 executable and/or not stripped debug info. :wink:

BTW, I saw first used 'header.exe' and after that 'taptap.exe' to change the internal name,
but why not just use only 'header.exe' with switch -n i.e. "-n[string] insert 'string' as tape name" .... 8)
User avatar
waskol
Flight Lieutenant
Posts: 430
Joined: Wed Jun 13, 2007 8:20 pm
Location: FRANCE, Paris

Re: OSDK 1.21

Post by waskol »

The new version is compiled with Delphi 11 and not with Delphi 7. There have been a size inflation between, yes.
Compiled with Delphi 12, it weights 1735 kb
With Lazarus\fpc, it weights 1599 kb.
Modern compilers...
if you type "reduce exe size delphi", you will see that it is a long time problem.
Because delphi includes its own runtimes in the executable.
32/64 executable and/or not stripped debug info.
yes It is stripped. With debug info it would weight 5Mb ! 32/64 bits are about the same size.

the old taptap was very limited in its functionalities and was designed with the index at the end, you are right (type in a shell "taptap help")
Though, It was not intended to work on modern 64bits windows.

Anyway, because I am a "genius" (lol), I managed to reduce the size by statically linking the "Delphi runtime library" (The "RTL", wich is the main runtime) and only this one !!!
Compiled with Delphi 12 CE (freeware)
You now have taptap in two flavours
- taptap.exe, 72kb, 32bits
- taptap64.exe, 99kb, 64bits

I put it on diet ;)
download here :
https://workupload.com/file/xUNMLgxxuqb

More over, if you type in a console

Code: Select all

prompt>taptap help
you will see that have a lot more capabilities, and a lot of bug fixes.
you can type :

Code: Select all

prompt>taptap help ren
for details about the ren command

enjoy :D
User avatar
Dbug
Site Admin
Posts: 5038
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OSDK 1.21

Post by Dbug »

@ibisum, could you try that new taptap.exe (32 bit so it can run on both 32 and 64 bit systems) with the new way of passing parameters to see if that run on your machine:
Post Reply