Mercurial > hg > Members > kono > nitros9-code
diff level1/cmds/printerr.asm @ 0:6641a883d6b0
Initial revision
author | boisy |
---|---|
date | Thu, 04 Apr 2002 16:34:12 +0000 |
parents | |
children | 33ae014c4b25 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level1/cmds/printerr.asm Thu Apr 04 16:34:12 2002 +0000 @@ -0,0 +1,128 @@ + nam Printerr + ttl OS-9 Level One printerr routine + + ifp1 + use defsfile + endc + +tylg set Prgrm+Objct +atrv set ReEnt+rev +rev set $01 + + mod eom,name,tylg,atrv,start,size + +datarea rmb 86 +size equ . + +name fcs /Printerr/ + fcb $06 + +ErrFile fcc "/D0/SYS/ERRMSG" + fcb $0D + fcc ",,,,,,,,,,,," + +ErrMsg fcc "Error #" + fcb $FF + +SysSVC fcb F$PErr + fdb FPErr-*-2 + fcb $80 + +start clra + leax <name,pcr + os9 F$Link link one extra time + bcs error + leay <SysSVC,pcr + os9 F$SSvc + clrb +error os9 F$Exit + +FPErr ldx <D.Proc + lda P$PATH+2,x get stderr path + beq Exit2 + leas <-$56,s make room on stack + ldb R$B,u get error code + leau ,s point U to save area + sta ,u store path + stb 2,u store error code + bsr PErrOrg print error as originally done + lda #READ. + leax >ErrFile,pcr + os9 I$Open + sta 1,u save path to file + bcs Exit1 + bsr L008D + bcs L0083 + bne L0083 +L0077 bsr L00D4 + bsr ReadLine + bcs L0083 + ldb ,x + cmpb #$30 + bcs L0077 +L0083 lda 1,u + os9 I$Close +Exit1 leas <$56,s +Exit2 clrb + rts + +L008D bsr ReadLine + bcs L009B + bsr L00DE + cmpa #$30 + bcc L008D + cmpb 2,u + bne L008D +L009B rts + +* read a line from the error file +ReadLine lda 1,u get path number of file + leax 5,u point X to buffer + ldy #80 max 80 chars + os9 I$ReadLn read line + rts + +PErrOrg leax >ErrMsg,pcr + leay 5,u point to buffer area + lda ,x+ +CopyLoop sta ,y+ + lda ,x+ + bpl CopyLoop while hi bit not set in A + ldb 2,u get error number + lda #$2F +L00BA inca + subb #$64 + bcc L00BA + sta ,y+ + lda #$3A +L00C3 deca + addb #10 + bcc L00C3 + sta ,y+ + tfr b,a + adda #$30 + ldb #$0D + std ,y+ + leax 5,u point X at buffer +L00D4 ldy #80 max string len + lda ,u get stderr path + os9 I$WritLn + rts + +L00DE clrb +L00DF lda ,x+ + suba #$30 + cmpa #$09 + bhi L00F0 + pshs a + lda #10 + mul + addb ,s+ + bcc L00DF +L00F0 lda -1,x + rts + + emod +eom equ * + end +