I’ m using official OpenWatcom 16BitDOS port and found that in heap_4.c (and heap_5.c) size_t is used for address arithmetic and aligning (FreeRTOS V9.0.0).
But casting far pointer to size_t always result zero in segment memory model:
/* Ensure the heap starts on a correctly aligned boundary. */ uxAddress = ( size_t ) ucHeap;
the result that heap placed at zero address (applicashon crash).
When I made some modificationsn in heap init function such as:
- change uxAddress to long
- start using FP_SEG and FP_OFF macroses for convert far pointer to/from absolute address
heap start working correctly.
It’s easy to reproduce this with openwatcom and DOSBox.
Does this port still supported or I missed somethig that I can’t use
heap_4 or heap_5 memory mangement with it?
or heap init code must be refactored to be more portable?