Commit graph

8270 commits

Author SHA1 Message Date
tkchia b59422a24b pc86: add degenerate "hard disk partition table" to boot sector
This is needed on some PCs to boot the pc86.img as a USB drive.
2022-09-20 16:14:38 +00:00
David Given 8619ce3ada
Merge pull request #272 from tkchia/tkchia/20220826
plat/msdos386: refactor, firm up, and optimize
2022-08-26 23:14:26 +02:00
tkchia 247a2bd6ae plat/msdos386: rename _psp[] to .psp, avoid namespace pollution 2022-08-26 17:32:50 +00:00
tkchia f8a6f92752 plat/msdos386: fix: RM int 0x21 calls was clobbering high halves
of esi and edi registers
2022-08-26 17:32:50 +00:00
tkchia cba54b205b plat/msdos386: refactor, firm up, and optimize
- refactor code for transfer buffer reads/writes, real mode
   int 0x21 calls, and assembler segment declarations
 - define transfer buffer size in one place
 - beef up error checking for transfer buffer operations
   (prevent buffer overflows)
 - also optimize such operations to transfer dword by dword
   where feasible
2022-08-26 17:31:28 +00:00
David Given 8891fae303
Merge pull request #270 from tkchia/tkchia/20220823
Some fixes for msdos386 target platform
2022-08-24 19:13:37 +02:00
tkchia 15955282f6 plat/msdos386: fix some issues in libsys code
- ensure es = ds = ss upon exit of each C runtime function
 - clear upper 16 bits of ebx before setting them to 0x0021,
   when invoking interrupt_ptr to simulate a RM int 0x21
 - make _sys_exists use the transfer buffer (which it needs)
 - make _sys_rawread properly handle an end-of-file read
   (zero bytes read)
 - make argument to _sys_seterrno short --- after a failed
   int 0x21 call, only the lower 16 bits of eax hold the MS-DOs
   error code
 - _sys_rawlseek accepts only 3 longword arguments, not 4
   (the offset is only 1 longword)
 - other minor fixes
2022-08-24 15:17:04 +00:00
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 0165c07c7b
Merge pull request #269 from davidgiven/dtrg-msdos386
Add a plat for 32-bit DOS executables.
2022-08-19 21:00:43 +02: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 967b46e98e Hacky workaround to make lar work. 2022-08-10 00:15:40 +02:00
David Given b868c1ece9 Hacky workaround to make operatings on pointer differences work. 2022-08-10 00:15:28 +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 3716d49cd9 Allow arithmetic on variable values. 2022-08-08 22:02:51 +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
David Given a47bb5493d
Merge pull request #268 from tkchia/tkchia/self-host
plat/msdos86: add rename( )
2022-08-07 20:42:01 +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 a45f1cdd33 Allow stosw, lodsw, scasw. 2022-08-03 20:32:58 +02:00
David Given 86ded9ea2c
Merge pull request #266 from tkchia/tkchia/20220802
Fix cpp.ansi crash when stringifying missing macro argument
2022-08-03 14:16:33 +02:00
tkchia 3b1d440d5c Fix cpp.ansi crash when stringifying missing macro argument
Fixes https://github.com/davidgiven/ack/issues/238
2022-08-02 15:28:21 +00:00
David Given afd6f30812
Merge pull request #265 from davidgiven/dtrg-fixes
Make compatible with lua 5.1.
2022-08-01 22:46:02 +02:00
David Given 5dd6e8c856 Make compatible with lua 5.1. 2022-08-01 22:44:31 +02:00
David Given 50d3354ccb
Merge pull request #264 from davidgiven/dtrg-fixes
Fix or silence a lot of annoying build warnings.
2022-08-01 22:37:19 +02:00
David Given d728801f43
Merge pull request #263 from tkchia/tkchia/20220801
Fix use-after-free in Modula-2 middle-end's em_m2
2022-08-01 22:34:57 +02:00
David Given 511c3e99ee Fix a whole bunch of warnings. 2022-08-01 22:08:23 +02:00
David Given 551f666028 Silence an irritating warning. 2022-08-01 22:08:13 +02:00
David Given fc0cdc0471 Don't dump statistics unless in verbose mode. 2022-08-01 22:01:18 +02:00
David Given 3f64b7c8c1 Don't spam the output with debug information unless -v is set. 2022-08-01 21:58:01 +02:00
tkchia 14c386561a Fix use-after-free in Modula-2 middle-end's em_m2
Partly fixes https://github.com/davidgiven/ack/issues/262
2022-08-01 17:48:54 +00:00
David Given 3757b4ad03
Merge pull request #260 from davidgiven/dtrg-ci
Build a Windows installer.
2022-07-20 01:04:58 +02:00
David Given c295920696 Make the Windows binaries actually run. 2022-07-20 00:25:07 +02:00
David Given f5acf70911 Typo fix. 2022-07-20 00:24:52 +02:00
David Given 6a3c94a9d0 Better string escaping, but it's still not good enough to support paths
with spaces.
2022-07-20 00:24:20 +02:00
David Given 3e394b95e4 Actually make the binaries runnable... and a fraction of the size. 2022-07-19 21:44:34 +02:00
David Given 4555352a18 Build a Windows installer when doing a CI build. 2022-07-19 21:21:48 +02:00