view 3rdparty/drivers/compusense/vinit.asm @ 3295:6b7a7b233925 default tip

makefile: Allow PORTS with level1/2 mix https://sourceforge.net/p/nitros9/feature-requests/10/
author Tormod Volden <debian.tormod@gmail.com>
date Tue, 19 Apr 2022 18:12:17 +0200
parents a418110ecb44
children
line wrap: on
line source

*******************************************************************
* VInit - DragonPlus virtual (ram) disk initialiser
*
* $Id$
*
* Edt/Rev  YYYY/MM/DD  Modified by
* Comment
* ------------------------------------------------------------------
*   -      1986/??/??
* Original Compusense distribution version
*
* 2005-09-01, P.Harvey-Smith.
* 	Disassembled and cleaned up.
*
	nam   	VINIT
        ttl   	program module       

* Disassembled 2005/05/31 16:27:58 by Disasm v1.5 (C) 1988 by RML

        ifp1
        use   	defsfile
	use	dplusdef
        endc
	
tylg    set   	Prgrm+Objct   
atrv    set   	ReEnt+rev
rev     set   	$01
        mod   	eom,name,tylg,atrv,start,size
u0000   rmb   	1
u0001   rmb   	102
size    equ   	.

name    equ   	*
        fcs   	/VINIT/
        fcb   	$01 
 
SignonMess   
	fcc	'VINIT (C) COPYRIGHT COMPUSENSE LIMITED 1985'
        fcb   	$0D 
SignonMessLen	equ	*-SignonMess

L003F	
	fcc	'VINIT - RAM disk formatted - 236 sectors free'
        fcb   	$0D 
         
	fcb   	$56 V
        fcb   	$B0 0
	 
L006F    
	fcc	'VINIT - already formatted - continue (Y/N)?  '

L009C    
	fcc	'VINIT - format canceled'
        fcb   	$0D 

L00B5   fcb   	$00 
        fcb   	$00 
        fcb   	$F0 p
        fcb  	$00 
        fcb   	$00 
        fcb   	$1E 
        fcb   	$00 
        fcb   	$01 
        fcb   	$00 
        fcb   	$00 
        fcb   	$02 
        fcb   	$00 
        fcb   	$00 
        fcb   	$FF 
        fcb   	$52 R
        fcb   	$44 D
        fcb   	$00 
        fcb   	$00 
        fcb   	$1E 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 

TimeBuff1   
	fcb   	$00	* year 
        fcb   	$00 	* Month
        fcb   	$00 	* Day
        fcb   	$00 	* Hour
        fcb   	$00 	* minute, second over-writes first byte of message

L00D4   fcc	'RAM DISK (C)COMPUSENSE LTD 1985'

L00F3   fcb   	$F0 p
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 

L0111   fcb   $BF ?
        fcb   $00 
        fcb   $00 
	
TimeBuff2    
	fcb   	$00 	* Year
        fcb   	$00 	* Month
        fcb   	$00 	* Day
        fcb   	$00 	* hour
        fcb   	$00 	* minute
L0119   fcb   	$00 	* second (saved and restored in code).
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$40 @
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$03 
        fcb   	$00 
        fcb   	$01 
L0126   fcb   	$2E .
        fcb   	$AE .
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   	$00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
        fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $02 
         fcb   $AE .
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $00 
         fcb   $02 

start   equ   	*

        stx   	u0001,u
        lbsr  	L02A7
        leax  	>SignonMess,pcr
        ldy   	#SignonMessLen
        lda   	#$01
        os9   	I$WritLn 
        lbcs  	L020F
        
	lda   	>L00D4,pcr	* Save last byte
        leax  	>TimeBuff1,pcr	* Point to buffer
        os9   	F$Time   	* Get time/date
        sta   	>L00D4,pcr	* restore last byte, ignore seconds

	lda   	>L0119,pcr	* Save last byte
        leax  	>TimeBuff2,pcr  * Point to buffer
        os9   	F$Time   	* Get time/date
        sta   	>L0119,pcr	* restore last byte, ignore seconds
        
	lda   	#Page1	
	ldx   	#$0200
        lbsr  	L0223
        
	pshs  	x,cc		* save regs
        orcc  	#$50		* disable inturrupts
        sta   	>MemoryPage	* switch pages
        lbsr  	L0212
        ldx   	#$0200
        leay  	>L00B5,pcr
        ldb   	#$3E
L01B5   lda   	,y+
        sta   	,x+
        decb  
        bne   	L01B5
        ldx   	#$0300
        leay  	>L00F3,pcr
        ldb   	#$1E
        lbsr  	L021D
L01C8   lda   	,y+
        sta   	,x+
        decb  
        bne   	L01C8
        ldx   	#$0400
        leay  	>L0111,pcr
        ldb   	#$15
        lbsr  	L0212

L01DB   lda   	,y+
        sta   	,x+
        decb  
        bne   	L01DB
        ldx   	#$0500
        leay  	>L0126,pcr
        ldb   	#$40
        lbsr  	L0212
L01EE   lda   	,y+
        sta   	,x+
        decb  
        bne   	L01EE
        clr   	>MemoryPage
        puls  	x,cc
        leax  	>L003F,pcr
        ldy   	#$002E
        lda   	#$01
        os9   	I$WritLn 
        
	lbcs  	L020F
        lbsr  	L02A7
        clrb  
L020F   os9   	F$Exit   

L0212   pshs  	u,y,x,b,a
        clrb  
L0215   clra  
L0216   stb   	,x+
        deca  
        bne   	L0216
        puls  	pc,u,y,x,b,a
	
L021D   pshs  	u,y,x,b,a
        ldb   	#$FF
        bra   	L0215

L0223   pshs  	u,y,x,a,cc
        orcc  	#$50
        sta   	>MemoryPage
        leau  	>L00D4,pcr
        ldb   	#$1F
        leax  	<$1F,x
L0233   lda   	,x+
        cmpa  	,u+
        bne   	L02A2
        decb  
        bne   	L0233
        clr   	>MemoryPage
L023F   puls  	u,y,x,a,cc
        pshs  	u,y,x,a,cc
        lbsr  	L02A7
        leax  	>L006F,pcr
        ldy   	#$002C
        lda   	#$01
        os9   	I$Write  
	
        lbcs  	L020F
        ldx   	u0001,u
        lda   	,x+
        cmpa  	#$0D
        beq   	L0274
        sta   	,u
        stx   	u0001,u
        leax  	-$01,x
        ldy   	#$0001
        lda   	#$01
        os9   	I$Write  
	
        lbcs  	L020F
        bra   	L0280
L0274   leax  	,u
        ldy   	#$0001
        clra  
        os9   	I$Read   
	
        bcs   	L020F
L0280   lda   	,u
        ora   	#$20
        cmpa  	#$79
        beq   	L029F
        cmpa  	#$6E
        bne   	L023F
        lbsr  	L02A7
        leax  	>L009C,pcr
        ldy   	#$0019
        lda   	#$01
        os9   	I$WritLn 
        
	lbra  	L020F
L029F   lbsr  	L02A7
L02A2   clr   	>MemoryPage
        puls  	pc,u,y,x,a,cc
	
L02A7   pshs  	a
        lda   	#$0D
        bsr   	L02AF
        puls  	pc,a
	
L02AF   pshs  	y,x,b,a
        leax  	,s
        ldy   	#$0001
        lda   	#$01
        os9   	I$WritLn 
        puls  	pc,y,x,b,a
	
        emod
eom     equ   *
        end