Можно в начале расскоментировать .asect и .=0, после строчки PPUEND: добавить
И собрать командой
link/nobitmap/stack:0/top:1000 TSTCLR
1000 из .BLKB ^O<1000>-. должна быть синхронизирована с 1000 из /top:1000
- - - Добавлено - - -
tcflush (и по идее FlushFileBuffers) - это НЕ ОЖИДАНИЕ передачи всего буфера, а его СБРОС
"tcflush() — Flush input or output on a terminal
Flushes input data that has been received by the system but not read by an application.
Flushes output data that has been written by an application but not sent to the terminal."
И, похоже (Sleep(2000) намекает), проблема банальна - в буфере на com порт ещё есть что-то для передачи, а программа уже завершилась и windows СБРАСЫВАЕТ все буфера для COM порта или же это делают вот эти два вызова
::PurgeComm(hComPort, PURGE_RXCLEAR);
::PurgeComm(hComPort, PURGE_TXCLEAR);
если они были в первоначальном варианте
- - - Добавлено - - -
И ещё комментарий по тексту загружаемого. Если закомментить
То программа будет собрана с адреса 1000 и при загрзуке её с адреса 0 работать, по идее, не будет - много абсолютных ссылок, типа:
Код:
mov #PPUSTA, R4 ; run PPU code
...
PPMSG: .word PPARR ; address of beginning of array
...
PPSEN: mov #PPMSG, R0 ; array address