Commit graph

343 commits

Author SHA1 Message Date
tkchia
249e4b9069 plat/msdos386: fix a few more issues with startup and stub code
- correctly calculate size of BSS area to clear
 - make realloc routine set both ds & es to point to new
   data segment
 - correctly initialize real mode flags when simulating real
   mode interrupt via DPMI
 - other minor fixes
2022-08-24 10:17:15 +00:00
tkchia
95ed8ee484 plat/msdos386: fix startup code so that it works under dosemu2
- do not try to store data through code segment selectors
 - set each segment limit to segment size - 1, not segment size
 - get PSP segment while still in real/V86 mode (DPMI host
   might choose to return PM selector for int 0x21, ah = 0x62)
 - other minor fixes
2022-08-23 14:35:43 +00:00
David Given
887ec0656e Update documentation. 2022-08-19 20:08:39 +02:00
David Given
d24c3f8722 Fix typo. 2022-08-19 20:03:48 +02:00
David Given
c37c0e62cc Remember to actually update the brk position when calling brk. 2022-08-19 20:03:40 +02:00
David Given
dc1f69be83 Most of read and write now works; filename-based operations partially work; but
there's a nasty memory corruption somewhere which needs investigating.
2022-08-19 00:08:57 +02:00
David Given
5329c98b81 Simplify and fix reading and writing so they seem to work. 2022-08-18 21:21:33 +02:00
David Given
cc356b5c75 Programs now start up and can write to the console, but crash when reading. 2022-08-18 00:24:08 +02:00
David Given
48398b072a write() system calls work; start going through the libsys. 2022-08-17 22:34:06 +02:00
David Given
680b6b9857 Marshal the environment, command line and PSP into 32-bit memory. 2022-08-11 23:36:23 +02:00
David Given
1764c6baa2 Made realloc work; the 32-bit process can now be resized to include bss and
stack.
2022-08-10 16:14:12 +02:00
David Given
d464606dd6 We can now load and run 32-bit protected-mode executables. We have not,
however, set up the data segment.
2022-08-09 23:49:18 +02:00
David Given
b48b5b13ce Maybe have a working stub now. 2022-08-09 23:32:41 +02:00
David Given
21b30ccadb We can now switch to 32-bit mode. 2022-08-08 23:22:00 +02:00
David Given
1e0961c679 Do enough of the boot stub to produce an EXE header and enter DPMI protected
mode.
2022-08-08 22:03:12 +02:00
David Given
f2a49ff3ab msdos86 actually emits .COM files. 2022-08-08 00:01:06 +02:00
David Given
b81ac5e2c3 Cut-and-paste the msdos86 libsys so the msdos386 stuff now at least builds. 2022-08-07 22:10:08 +02:00
David Given
00c722d2ef Merge from trunk. 2022-08-07 22:01:08 +02:00
tkchia
63f646de78 plat/msdos86: add rename( ) 2022-08-07 16:38:31 +00:00
David Given
6d9ac0b182 Add the nonfunctional boilerplate for the MSDOS 386 port. 2022-08-03 20:41:06 +02:00
David Given
511c3e99ee Fix a whole bunch of warnings. 2022-08-01 22:08:23 +02:00
David Given
33ce9169b4
Merge pull request #259 from davidgiven/dtrg-ci
Make work on Windows.
2022-07-18 23:05:01 +02:00
David Given
c573b9bce2 Split aal arguments properly. 2022-07-18 16:48:14 +02:00
David Given
01c2342e18 Create archives in chunks to allow for very long lists of members. 2022-07-18 00:55:02 +02:00
David Given
496424acf6 Merge from default. 2022-07-16 19:35:49 +02:00
tkchia
0236f00d26 plat/msdos86: fix: read() on O_TEXT fd should try to return any errors signaled by low-level read 2022-07-16 17:20:47 +00:00
David Given
9519588f59 Convert all the things to Unix format. 2022-07-16 00:02:46 +02:00
David Given
25b6712e63 Rework all the ackbuilder scripts not to use wildcards, because we can't expand
them without luaposix, which isn't available (easily) on OSX or Windows.
2022-07-14 23:57:54 +02:00
tkchia
1c71653d7f plat/msdos86: free up program memory above 64 KiB; also check
we have enough memory for BSS
2022-06-28 20:13:16 +00:00
tkchia
571fce1165 plat/msdos86: make getpid() use European MS-DOS's getpid syscall
if it exists
2022-06-24 17:00:57 +00:00
Tee-Kiah Chia
76c40b5dc0 plat/msdos86: add unlink( ) 2022-01-21 21:06:33 +00:00
Tee-Kiah Chia
84a25b0526 Add fork, wait, waitpid for all Linux targets, & execl for linux386. 2022-01-19 17:05:59 +00:00
David Given
7286c67e8f
Merge pull request #224 from nick-less/default
fix compile error under macos
2021-04-26 17:34:09 +02:00
Tee-Kiah Chia
a6c7ac2a28 plat/msdos86: add gettimeofday( ) 2021-03-29 15:15:13 +00:00
Tee-Kiah Chia
f2c8828a4b plat/msdos86: copy stubs kill( ), signal( ), from plat/pc86 2021-03-28 17:21:54 +00:00
Tee-Kiah Chia
466cf20805 plat/msdos86: add open( ), lseek( ), and getpid() 2021-03-28 17:21:53 +00:00
Tee-Kiah Chia
0d2b55cd29 plat/msdos86: add isatty( ), _setmode( ), read( ), write( ) 2021-03-28 17:21:52 +00:00
Tee-Kiah Chia
aaf3ef695b plat/msdos86: implement close( ) function & proper errno setting 2021-03-27 13:23:44 +00:00
Tee-Kiah Chia
4c678ca210 Adding MS-DOS .com program support (msdos86). Still incomplete. 2021-03-27 13:15:56 +00:00
Tee-Kiah Chia
64a74b4e09 Add .seek asm pseudo-op, advances location counter to fixed offset
The new .seek assembler pseudo-op advances the location
counter to a fixed offset within a section --- or to a fixed
address, if the section is a .base'd section.  It works
somewhat like the GNU assembler's .org pseudo-op, though
with a hopefully less confusing name.

This pseudo-op lets us avoid having to manually compute the
needed boot sector padding in the pc86 start-up code
plat/pc86/boot.s .
2021-03-19 13:36:24 +00:00
nick-less
2ae1f01f36 fix compile error under macos 2021-03-17 20:01:44 +01:00
tevorbl
cd36c3526b minor formatting changes
sim.c:
remove stray tracing statements
make formatting consistently leading tabs

Makefile:
restore ACK_TEMP_DIR & CC to default settings
2020-06-13 14:33:14 +01:00
tevorbl
6fe335b9e9 another fix for printf(float) on m68k platform
bug caused by this instruction:

  fmove.l fp0,d0 

problem was caused by a conflict between the fpu emulator (softfloat) and the compiler.

the emulator implemented this as a purely arithmetic move & conversion,
but the compiler assumed that the result could be interpreted as a logical (ie unsigned) conversion.
rightly or wrongly.


for example, if fp0 contained the value 2576980377.0  which is unsigned integer -1717987328
the emulator would treat this as an integer overflow and move 0x7fffffff (INT_MAX) into d0.

The complier on the other hand would assume that d0 contained 2576980377 (the unsigned value).

I don't know which is correct, but this is my fix for the time being.
2020-06-02 13:00:03 +01:00
tevorbl
04fe0aa53e fixed floats in printf in linux59k platform
problem was implementation of fint & fintrz floating point ops in m68kfpu.c
Both these ops truncated the integer to 32 bits instead of leaving it as an extended precision floating point number

Changed the implementation to use 64 bit ints instead of 32 bit ints.
2020-06-01 20:53:29 +01:00
tevorbl
e5da3227d9 fpu bug fix for fgetmant op
- inserted missing break
- use temp variable instead of manipulating dest register

fgetexp changed to directly convert int to floatx80
2020-05-30 13:37:04 +01:00
tevorbl
799900f45a update platform linux68k
latest version of musashi engine
includes floating point emulation
(plus a few patches to add in missing opcodes needed by ack - see tags JFF & TBB)

added a few missing linux syscalls in sim.c

pascal now runs pretty well
quick test with modula2 passes

c gets the floating point numbers wrong, so more work needed here

other languages untested

plat/linux68k/emu/build.lua is probably not quite right - the softfloat directory is compiled in the wrong place
2020-05-28 13:06:08 +01:00
David Given
97bed6c0a5 Fix incorrect instruction in the emulator disassembler. 2020-02-05 22:43:27 +01:00
David Given
1101922563 Add the deblocking parameter to cpm_bios_write(). 2020-02-05 22:05:03 +01:00
David Given
17fa773f04 Update CP/M libsys. 2019-11-23 11:31:03 +01:00
George Koehler
d6413c1a11 Enable long long in ACK C for osx386. 2019-09-25 12:35:48 -04:00