304 lines
9.3 KiB
NASM
304 lines
9.3 KiB
NASM
|
* AMOS Professional Misc Extension
|
||
|
* This file is fully public domain.
|
||
|
|
||
|
* Feel free to make a new version!
|
||
|
* Read the manual for more infos.
|
||
|
|
||
|
* Written with DevPac 2 by
|
||
|
|
||
|
* Frank Otto
|
||
|
* Grelckstr. 27
|
||
|
* 22529 Hamburg
|
||
|
* Germany
|
||
|
|
||
|
* E-Mail: FRANK@ZINOCAVE.wind.dbn.sub.org
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
; half english, half german, that's europe!
|
||
|
|
||
|
ExecBase=4
|
||
|
supervisor = -30
|
||
|
Version MACRO
|
||
|
dc.b "1.0"
|
||
|
ENDM
|
||
|
ExtNb equ 23-1
|
||
|
Include "|AMOS_Includes.s"
|
||
|
DLea MACRO
|
||
|
Move.l Extadr+Extnb*16(a5),\2
|
||
|
add.w #\1-MB,\2
|
||
|
ENDM
|
||
|
DLoad MACRO
|
||
|
move.l Extadr+Extnb*16(a5),\1
|
||
|
ENDM
|
||
|
Start dc.l C_Tk-C_Off
|
||
|
dc.l C_Lib-C_Tk
|
||
|
dc.l C_Title-C_Lib
|
||
|
dc.l C_End-C_Title
|
||
|
dc.w 0
|
||
|
* Offsets der Befehle
|
||
|
C_Off dc.w (L1-L0)/2,(L2-L1)/2,(L3-L2)/2,(L4-L3)/2
|
||
|
dc.w (L5-L4)/2,(L6-L5)/2,(L7-L6)/2,(L8-L7)/2
|
||
|
dc.w (L9-L8)/2,(L10-L9)/2,(L11-L10)/2,(L12-L11)/2
|
||
|
dc.w (L13-L12)/2,(L14-L13)/2,(L15-L14)/2
|
||
|
* Befehlsnamen
|
||
|
C_Tk dc.w 1,0
|
||
|
dc.b $80,-1
|
||
|
|
||
|
dc.w L_DLedOn,-1
|
||
|
dc.b "dled o",$80+"n","I",-1 ;Fertig
|
||
|
|
||
|
dc.w L_DLedOff,-1
|
||
|
dc.b "dled of",$80+"f","I",-1 ;Fertig
|
||
|
|
||
|
dc.w L_DisplayOn,-1
|
||
|
dc.b "display o",$80+"n","I",-1 ;Fertig
|
||
|
|
||
|
dc.w L_DisplayOff,-1
|
||
|
dc.b "display of",$80+"f","I",-1 ;Fertig
|
||
|
|
||
|
dc.w L_MultiOff,-1
|
||
|
dc.b "multi of",$80+"f","I",-1 ;Fertig
|
||
|
|
||
|
dc.w L_MultiOn,-1
|
||
|
dc.b "multi o",$80+"n","I",-1 ;Fertig
|
||
|
|
||
|
dc.w L_MouseOff,-1
|
||
|
dc.b "mouse of",$80+"f","I",-1 ;Fertig
|
||
|
|
||
|
dc.w L_Reset,-1
|
||
|
dc.b "rese",$80+"t","I",-1 ;Fertig
|
||
|
|
||
|
dc.w L_ClearRam,-1
|
||
|
dc.b "clear ra",$80+"m","I",-1 ;Fertig
|
||
|
|
||
|
dc.w L_DiskWait,-1
|
||
|
dc.b "disk wai",$80+"t","I",-1 ;Fertig
|
||
|
|
||
|
dc.w L_PalOn,-1
|
||
|
dc.b "pal o",$80+"n","I",-1
|
||
|
|
||
|
dc.w L_Fire,-1
|
||
|
dc.b "firewai",$80+"t","I",-1
|
||
|
|
||
|
dc.w 0
|
||
|
|
||
|
******************************************************************
|
||
|
* Start of library
|
||
|
C_Lib
|
||
|
|
||
|
******************************************************************
|
||
|
* COLD START
|
||
|
L0 moveq #ExtNb,d0
|
||
|
rts
|
||
|
|
||
|
******************************************************************
|
||
|
*
|
||
|
L1
|
||
|
|
||
|
******************************************************************
|
||
|
*
|
||
|
L2
|
||
|
|
||
|
******************************************************************
|
||
|
L_DisplayOff equ 3
|
||
|
L3 move.w #$01a0,$dff096 * Monitor aus
|
||
|
move.w #0,$dff180
|
||
|
rts
|
||
|
******************************************************************
|
||
|
L_DisplayOn equ 4
|
||
|
L4 move.w #$81a0,$dff096 * Monitor an
|
||
|
rts
|
||
|
******************************************************************
|
||
|
L_MultiOff equ 5
|
||
|
L5 movem.l a3-a6,-(sp) * Multitasking aus
|
||
|
move.l 4,a6
|
||
|
jsr -132(a6)
|
||
|
movem.l (sp)+,a3-a6
|
||
|
rts
|
||
|
******************************************************************
|
||
|
L_MultiOn equ 6
|
||
|
L6 movem.l a3-a6,-(sp) * Multitasking an
|
||
|
move.l 4,a6
|
||
|
jsr -138(a6)
|
||
|
movem.l (sp)+,a3-a6
|
||
|
rts
|
||
|
******************************************************************
|
||
|
L_DLedOn equ 7
|
||
|
L7 move.b #127,$bfd100 ; Laufwerk-LED an
|
||
|
move.b #119,$bfd100
|
||
|
move.b #0,$bfd100+512
|
||
|
rts
|
||
|
******************************************************************
|
||
|
L_DLedOff equ 8
|
||
|
L8 move.b #127,$bfd100 ; Laufwerk-LED aus
|
||
|
move.b #119,$bfd100
|
||
|
move.b #255,$bfd100+512
|
||
|
rts
|
||
|
******************************************************************
|
||
|
L_MouseOff equ 9
|
||
|
L9 move.w #$20,$dff096 ; Mouse aus
|
||
|
rts
|
||
|
******************************************************************
|
||
|
CuCuOff dc.b 27,"C0",0
|
||
|
even
|
||
|
******************************************************************
|
||
|
L_Reset equ 10
|
||
|
L10 MOVEA.L 4.W,A6
|
||
|
JSR -$0096(A6)
|
||
|
JSR -$0078(A6) ; Reset
|
||
|
CLR.L 4.W
|
||
|
LEA $00FC0000.L,A0
|
||
|
RESET
|
||
|
JMP (A0)
|
||
|
DC.B 'Nq'
|
||
|
rts
|
||
|
******************************************************************
|
||
|
L_ClearRam equ 11
|
||
|
L11 movem.l a6,-(sp) ; No Drivers
|
||
|
move.l 4,a6
|
||
|
moveq #0,d1
|
||
|
move.l #99999999,d0
|
||
|
jsr -198(a6)
|
||
|
move.l d0,a0
|
||
|
beq.s glbl
|
||
|
jsr -210(a6)
|
||
|
glbl movem.l (sp)+,a6
|
||
|
rts
|
||
|
******************************************************************
|
||
|
L_Fire equ 12
|
||
|
L12 btst #07,$bfe001
|
||
|
bne L12
|
||
|
rts
|
||
|
*****************************************************************
|
||
|
L_DiskWait equ 13
|
||
|
L13
|
||
|
dc: move.b $bfe001,d0 ; Diskchange
|
||
|
and.b #16,d0
|
||
|
bne dc
|
||
|
movem.l a6,-(sp)
|
||
|
movea.l 4,a6
|
||
|
Wait move.l #500,d1
|
||
|
Wait2 bsr tests
|
||
|
sub.l #1,d1
|
||
|
bne Wait2
|
||
|
jsr -120(a6)
|
||
|
lea $196(a6),a0
|
||
|
lea Validate,a1
|
||
|
jsr -276(a6)
|
||
|
move.l d0,d2
|
||
|
bne Check
|
||
|
lea $1a4(a6),a0
|
||
|
lea Validate,a1
|
||
|
jsr -276(a6)
|
||
|
move.l d0,d2
|
||
|
Check jsr -126(a6)
|
||
|
tst.l d2
|
||
|
bne Wait
|
||
|
movem.l (sp)+,a6
|
||
|
rts
|
||
|
tests movem.l a0-a6/d0-d7,-(sp)
|
||
|
movem.l (sp)+,a0-a6/d0-d7
|
||
|
rts
|
||
|
Validate:
|
||
|
dc.b 'Validator',0
|
||
|
even
|
||
|
**********************************************************************
|
||
|
L_PalOn equ 14
|
||
|
L14
|
||
|
|
||
|
Flag_60Hz RS.B 1
|
||
|
Flag_Color RS.B 1
|
||
|
Flag_OverScan RS.B 1
|
||
|
Flag_Enable RS.B 1
|
||
|
Flag_FatAgnus RS.B 1
|
||
|
Flag_Resident RS.B 1
|
||
|
gb_DisplayFlags EQU 206 ;graphics
|
||
|
gb_DisplayRows EQU 212
|
||
|
gb_NormalDisplayRows EQU 216
|
||
|
VBlankFrequency EQU 530
|
||
|
_LVOCloseLibraryP EQU -414
|
||
|
_LVOSumLibraryP EQU -426
|
||
|
_LVOOpenLibraryP EQU -552
|
||
|
Exebas EQU $4
|
||
|
LIBF_CHANGED EQU 2
|
||
|
LIB_FLAGS EQU 14
|
||
|
BEAMCON0 EQU $1DC
|
||
|
CUSTOM EQU $DFF000
|
||
|
CALL MACRO
|
||
|
IFC 'EXEC','\1'
|
||
|
MOVEA.L (Exebas).W,A6
|
||
|
ENDC
|
||
|
IFNC 'EXEC','\1'
|
||
|
MOVEA.L \1Base,A6
|
||
|
ENDC
|
||
|
JSR _LVO\2(A6)
|
||
|
ENDM
|
||
|
|
||
|
OPENLIB MACRO
|
||
|
LEA \1Name(PC),A1
|
||
|
CLR.L D0
|
||
|
CALL EXEC,OpenLibraryP
|
||
|
MOVE.L D0,\1Base
|
||
|
BEQ \2
|
||
|
ENDM
|
||
|
CLOSELIB MACRO
|
||
|
MOVEA.L \1Base,A1
|
||
|
CALL EXEC,CloseLibraryP
|
||
|
ENDM
|
||
|
Go60 tst.b Flag_FatAgnus(a0) ;put system in NTSC mode
|
||
|
beq.s .NoFatty
|
||
|
move.w #$0000,BEAMCON0!CUSTOM ;to NTSC please
|
||
|
bra.s .Go60
|
||
|
.NoFatty move.w #$0000,BEAMCON0!CUSTOM
|
||
|
bne.s .Error ;not available
|
||
|
.Go60 lea GFXName(PC),a1 ;modify graphics.library
|
||
|
clr.l d0
|
||
|
CALL EXEC,OpenLibraryP
|
||
|
move.l d0,a1
|
||
|
move.w gb_DisplayFlags(a1),d0
|
||
|
and.b #%11111011,d0
|
||
|
or.b #%00000001,d0
|
||
|
move.w d0,gb_DisplayFlags(a1)
|
||
|
move.w #200,gb_NormalDisplayRows(a1)
|
||
|
move.w #262,gb_DisplayRows(a1)
|
||
|
or.b #LIBF_CHANGED,LIB_FLAGS(a1)
|
||
|
movea.l a1,a2
|
||
|
CALL EXEC,SumLibraryP
|
||
|
movea.l a2,a1
|
||
|
CALL EXEC,CloseLibraryP
|
||
|
move.b #60,VBlankFrequency(a6)
|
||
|
or.b #LIBF_CHANGED,LIB_FLAGS(a6)
|
||
|
CALL EXEC,SumLibraryP
|
||
|
lea Flags(pc),a0
|
||
|
st Flag_Enable(a0) ;start it
|
||
|
moveq #0,d0
|
||
|
rts
|
||
|
.Error lea Flags(pc),a0
|
||
|
st Flag_60Hz(a0)
|
||
|
sf Flag_Enable(a0) ;stop it
|
||
|
moveq #-1,d0
|
||
|
rts
|
||
|
GFXName DC.B "graphics.library",$0
|
||
|
EVEN
|
||
|
Flags DCB.B 8
|
||
|
rts
|
||
|
************************************************
|
||
|
L15
|
||
|
|
||
|
|
||
|
* Welcome message ;"
|
||
|
C_Title:
|
||
|
dc.b "AMOSPro Misc Extension V"
|
||
|
Version
|
||
|
dc.b " by Frank Otto (1995)"
|
||
|
dc.b 0,"$VER: "
|
||
|
Version
|
||
|
dc.b 0
|
||
|
Even
|
||
|
|
||
|
***********************************************************
|
||
|
C_End: dc.w 0
|
||
|
even
|