Mercurial > hg > Members > kono > nitros9-code
view level1/cmds/dw.as @ 2848:94197db917c9 lwtools-port
Makefiles: Call OS9ATTR with multiple files (part 1)
Instead of spawning a os9 process for each file, call
it once with the whole bunch of files.
This can speed up the build process significantly when applied
globally. For now, do the special cases having "notdir".
author | Tormod Volden <debian.tormod@gmail.com> |
---|---|
date | Fri, 12 Jul 2013 00:01:00 +0200 |
parents | d660d443fe5f |
children |
line wrap: on
line source
******************************************************************** * dw - command interface to the server * * $Id$ * * Edt/Rev YYYY/MM/DD Modified by * Comment * ------------------------------------------------------------------ * 1 2010/01/02 Aaron Wolfe * Most basic implementation using new DW utility API nam dw ttl command interface to the server section __os9 type equ Prgrm lang equ Objct attr equ ReEnt rev equ $00 edition equ 1 stack equ 200 endsect section bss pbuffer rmb 256 pbend rmb 2 cbuffer rmb 256 portdev rmb 10 portpath rmb 1 outpath rmb 1 numbyt rmb 1 die rmb 1 endsect section code * signal handling icpt lda #1 sta die,u rti command fcc 'dw ' * save initial parameters __start pshs d pshs x clr die,u * set intercept handler leax icpt,pcr *ptr to handler os9 F$Icpt clra lbsr TCPOpen lbcs errex1 gotport sta portpath,u * rawpath lbsr RawPath * write command to port lda portpath,u ldy #3 leax command,pc os9 I$Write lbcs errex2 * write parameters to port - X = start addr, y = # bytes, A = path# puls x puls y os9 I$WritLn lbcs errex2 * read result leax pbuffer,u lda portpath,u ldy #1 rrloop os9 I$Read lbcs errex2 ldb ,x+ cmpb #C$CR * end of response bne rrloop * look for Fail ldb pbuffer,u cmpb #'F bne gotconn * we connected * display failure message lda #1 ldy #1 leax pbuffer,u ldb #9 *skip proto error info (FAIL xxx ) abx prloop os9 I$Write ldb ,x+ cmpb #C$CR *end of response bne prloop ldy #2 leax crlf,pc os9 I$Write lbra done crlf fcb C$CR fcb C$LF * response loop * read 1 byte, this is how many bytes follow in this set. 0 for end of response gotconn nop * check for incoming serial data rloop lda portpath,u ldb #SS.Ready os9 I$GetStt bcc serinc read and print the byte * if we got no data and die is set, bail lda die,u bne done * sleep a while ldx #0001 os9 F$Sleep bra rloop * read B bytes from serial, print on screen serinc clra tfr d,y lda portpath,u leax pbuffer,u os9 I$Read lbcs errex2 * print the data to stdout lda #1 leax pbuffer,u os9 I$Write bra rloop done clrb *no errors here * close port errex2 lda portpath,u os9 I$Close errex1 os9 F$Exit *goodbye endsect