view 3rdparty/packages/subsim/presub.asm @ 2855:e126b9acab32 lwtools-port

rules.mak: Do not hardcode path for "echo" It is basically the only tool with full path here and I don't see any reason for it. We don't use special echo options that would fail on the shell built-in echo. Also don't hardcode path for losetup. sudo should make sure you have the relevant location in your path, and that the path is sanitized, otherwise your sudo setup is broken.
author Tormod Volden <debian.tormod@gmail.com>
date Sat, 13 Jul 2013 11:30:31 +0200
parents 0de024ea86cd
children
line wrap: on
line source

********************************************************************
* PRESUB - Sub Battle Simulator (autoex module)
*
* $Id$
*
* Edt/Rev  YYYY/MM/DD  Modified by
* Comment
* ------------------------------------------------------------------
*   0      2003/01/12  Boisy G. Pitre
* Disassembly of original distribution.

         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   !/dd/cmds!
         fcb   C$CR
SubPrg   fcc   /sub/
         fcb   C$CR

         emod
eom      equ   *
         end