这个旧程序写的是什么语言?

Raj*_*jju 3 programming-languages dos forth

"嗨,你能不能为我改写一些东西",我的老板说,"一些遗留代码".是的,遗留代码写在早期中生代的某处.

我还剩30个小时,我还是不知道,这是什么样的语法!VHLD?VBA?程序是专门做的事情与音频文件,并专门为DOS下运行.

你能给我一个暗示这是什么意思吗?怎么编译呢?

代码段:

enter \ Load - main screen
empty  forth definitions  decimal
application  warning on

: TITLE ." KCS version 0.8  28-Jan-06" cr ;

cr .( Compiling: )  title  2 load

 cr .( Save to disk? )  y/n
[if]
\  pad reserve @ + 256 + limit s0 @ - + set-limit
  turnkey program  KCS
[then]



\ Load - defaults
 variable RESERVE  0 reserve !       \ reserved memory tally
 defer ?BREAK  ' noop is ?break      \ break check off
 defer SET-IO  ' bios-io is set-io   \ default console mode
 defer ERRFIX  ' noop is errfix      \ reset on-error handler

 blk @ 1+ #screens 1- thru       \ load electives & application

 ' (?break) is ?break           \ enable user break
\ ' dos-io is set-io             \ enable console redirection
\ ' deloutfile +is errfix        \ delete outfile on error
\ wrtchk off                     \ disable overwrite check




\ Load - electives
  1 fload DOSLIB     \ load DOSLIB library

 _Errors            \ error handler
 _Inout1            \ number output
 _Inout2            \ string & number input
 _String1           \ basic strings
\ _String2           \ extra strings
 _Parsing           \ command-line parsing
 _Fileprims         \ file primitives
 _Files             \ default files
 _Bufinfile         \ buffered input file
 _Bufoutfile        \ buffered output file


\ DECODE
\ Convert wave file to program
: DECODE  ( -- )
  0. decodecount 2!  0. paritycount 2!  0 errors !
  skipheader
  begin
    ['] decodebyte  1 ?catch 0=
   while ( not EOF )


 conout @ if  emit  else  writechar  then
    1 decodecount m+!
  repeat
  .decoded ;




\ SETMODE
\ Select Kansas City Standard or Processor Tech. CUTS mode
: SETMODE  ( -- )
  mode @ if ( CUTS )
    8 to databits  2 sbits !  4 speed !  parity off  pace off
    nullcnt off
    ['] 0bit-sqr-cuts is 0bit-sqr  ['] 1bit-sqr-cuts is 1bit-sqr
    ['] 0bit-sin-cuts is 0bit-sin  ['] 1bit-sin-cuts is 1bit-sin
    ['] seekstart-cuts is seekstart  ['] getbit-cuts is getbit
  else ( KCS )
    ['] 0bit-sqr-kcs is 0bit-sqr  ['] 1bit-sqr-kcs is 1bit-sqr
    ['] 0bit-sin-kcs is 0bit-sin  ['] 1bit-sin-kcs is 1bit-sin
    ['] seekstart-kcs is seekstart  ['] getbit-kcs is getbit
  then ;


\ (RUN)
\ Run application
: (RUN)  ( -- )
  setmode
  r/o openinfile
  decoding @ if
    conout @ 0= if  r/w makeoutfile  then
    cr decode
  else
    r/w makeoutfile
    cr encode
  then
  closefiles
  ;


\ DEFAULTS
\ Set application defaults
: DEFAULTS  ( -- )
  mode off  decoding on  strict off  ignore off  conout off
  1 speed !  2 sbits !  parity off  5 leadtime !  10 nullchar !
  pace off  nullcnt off  wave off  tone off  inverted off ;

defaults








\ RUN PROGRAM
\ Run application with error handling
: RUN  ( -- )
  ['] (run) catch ?dup if  >r errfix r> throw  then ;

\ Main
: PROGRAM  ( -- )
  set-io                \ set console mode
  defaults              \ set defaults
  cr title              \ show application name
  parsecmd              \ get options/filenames
  run                   \ run application
  cr ." done"           \ show success
  ;
Run Code Online (Sandbox Code Playgroud)

Ros*_*dge 11

它用Forth编写,可能是DX-Forth方言.该程序对包含堪萨斯城标准格式数据的WAVE文件进行解码和编码.这种格式用于在早期的S-100 CP/M机器上记录盒式磁带上的数据.搜索网络显示,有一个用DX-Forth编写程序可以解码和编码这种格式的WAVE文件,所以我猜这是你要重写的程序.

但是,不是重写此代码,更简单的方法是使用已经完成工作的现有免费软件.例如,有一个名为py-kcs的程序用Python编写,它应该是一个功能替代品,一个叫做haxe的hx-kcs可以进行解码.