Mercurial > hg > Members > kono > nitros9-code
changeset 791:3f51208a2f6b
Added module
author | boisy |
---|---|
date | Sun, 12 Jan 2003 17:05:10 +0000 |
parents | 5e2b4953c975 |
children | a78b45204ed9 |
files | 3rdparty/packages/subsim/presub.asm |
diffstat | 1 files changed, 125 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/3rdparty/packages/subsim/presub.asm Sun Jan 12 17:05:10 2003 +0000 @@ -0,0 +1,125 @@ + nam sub + ttl startup program + +* Disassembled 03/01/12 10:22:39 by Disasm v1.5 (C) 1988 by RML + + ifp1 + use defsfile + endc + +tylg set Prgrm+Objct +atrv set ReEnt+rev +rev set $01 +edition set 1 + + mod eom,name,tylg,atrv,start,size + +u0000 rmb 2 +u0002 rmb 8 +u000A rmb 3 +u000D rmb 19 +u0020 rmb 83 +u0073 rmb 311 +size equ . + +name fcs /sub/ +* fcb edition + +start lds #$0080 + leax >CurOff,pcr + lbsr WriteTxt turn cursor off +ShowMenu leax >Menu,pcr + lbsr WriteTxt show menu + lbsr Read1Chr read char + cmpa #'1 is it 1? + beq DoCMP branch if so + cmpa #'2 is it 2? + beq DoMONO branch if so + cmpa #'3 is it 3? + beq DoRGB branch if so + leax >Bell,pcr else ring bell + lbsr WriteTxt + bra ShowMenu and start over +DoCMP ldx #$0000 composite + bra SetMntr +DoMONO ldx #$0002 monochrome + bra SetMntr +DoRGB ldx #$0001 RGB +SetMntr ldd #($01*256)+SS.Montr + os9 I$SetStt set monitor type + leax >SwapDisk,pcr point to disk swap message + lbsr WriteTxt write text + lbsr Read1Chr read char + leax >CurOn,pcr + lbsr WriteTxt turn on cursor + leax >NewDir,pcr + lda #EXEC. + os9 I$ChgDir change directory + bcc L006C branch if successful +L0069 os9 F$Exit else exit +L006C ldb #$0C screen clear character + stb >$0186 store in buffer + ldx #$0186 point X to buffer + ldy #$0001 one byte + lda #$01 to stdout + os9 I$Write write it! + ldd #$1100 + leax >SubPrg,pcr + ldy #$0000 + ldu #$0082 + os9 F$Chain chain to new program + bcs L0069 branch if error + ldd #$0000 code should never get here if chain worked! + os9 F$Exit + +Read1Chr pshs y,x,b save regs + clra standard input + ldx #$0186 point to input buffer + ldy #$0001 get 1 char + os9 I$Read do it! + lda >$0186 get char at buffer ptr + puls pc,y,x,b and return + +* Write string routine +* Note: terribly ineffecient +WriteTxt pshs y,b,a save registers +NextByte ldb ,x+ get byte at X + beq WritExit branch if zero + stb >$0186 else save + pshs x,b,a save registers again + ldx #$0186 point to buffer + ldy #$0001 1 char + lda #$01 to stdout + os9 I$Write write it + puls x,b,a pull registers + bra NextByte go get next char +WritExit puls pc,y,b,a return + +CurOff fcb $05,$20,$00 +CurOn fcb $05,$21,$00 +Menu fcb $0c,$02,$20,$22 + fcc /WHAT TYPE OF DISPLAY DO YOU HAVE/ + fcb C$LF,C$CR,C$LF,C$CR + fcc / (1). Television/ + fcb C$LF,C$CR,C$LF,C$CR + fcc / (2). Monochrome Monitor/ + fcb C$LF,C$CR,C$LF,C$CR + fcc / (3). R.G.B. Monitor./ + fcb 0 +SwapDisk fcb $0C,$02,$23,$25 + fcc /Insert side / + fcb $1f,$24,$32,$1f,$25 + fcc / of diskette/ + fcb C$LF,C$LF,C$CR + fcc / and press any key to continue/ + fcb C$LF,C$LF,C$CR,00 +Bell fcb C$BELL,$00 +NewDir fcc !/d0/cmds! + fcb C$CR +SubPrg fcc /sub/ + fcb C$CR + + emod +eom equ * + end +