home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / BDSC / BDSC-3 / SAMPLE.CSM < prev    next >
Text File  |  2000-06-30  |  768b  |  43 lines

  1. ;
  2. ; A sample function in CSM format. This is "getchar", out of the std
  3. ; library:
  4. ;
  5.     maclib <bds>
  6.  
  7.     function    getchar
  8.  
  9.     lda ungetl    ;any character pushed back?
  10.     ora a
  11.     mov l,a
  12.     jz gch2
  13.     xra a        ;yes. return it and clear the pushback
  14.     sta ungetl    ;byte in C.CCC.
  15.     mvi h,0
  16.     ret
  17.  
  18. gch2:    push b
  19.     mvi c,conin
  20.     call bdos
  21.     pop b
  22.     cpi cntrlc    ;control-C ?
  23.     jz base        ;if so, reboot.
  24.     cpi 1ah        ;control-Z ?
  25.     lxi h,-1    ;if so, return -1.
  26.     rz
  27.     mov l,a
  28.     cpi cr        ;carriage return?
  29.     jnz gch3
  30.     push b
  31.     mvi c,conout    ;if so, also echo linefeed
  32.     mvi e,lf
  33.     call bdos
  34.     pop b
  35.     mvi l,newlin    ;and return newline (linefeed)..
  36.  
  37. gch3:    mvi h,0
  38.     ret
  39.  
  40.     endfunc getchar
  41.  
  42.  
  43.