home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 8
/
FreshFishVol8-CD2.bin
/
bbs
/
dev
/
tbsource.lha
/
TBSource
/
Blank
/
Blank.S
< prev
next >
Wrap
Text File
|
1993-12-21
|
7KB
|
363 lines
;
; ### Blank v0.00b ###
;
; - Created 880802 by JM
; - Recreated 910603 by TB
;
; Bugs: None born.
;
;
; Edited:
;
; - 880802 by JM -> v1.0 - kommentit
; - 880803 by JM -> v1.5 - lisatty CTRL+C
; - 910603 by TB -> v0.00a - added checks for windows opening etc.
; - 910604 by TB -> v0.00b - added checks for 2.0
; - 910723 by TB -> v0.00c - changed write function for 2.0
;
include "jmplibs.i" omia makroja
include "hards.i" hardisrekistereja
include "XREF:exec.xref" maarittelee Execin rutiinit
include "XREF:dos.xref" maarittelee Dossin rutiinit
include "XREF:intuition.xref"
include "XREF:gfx.xref"
_LVOOpenScrTList: equ -$264
_LVOOpenWinTList: equ -$25e
keyboard equ $bfec01 nappaimiston rekisteri
mouse0 equ $dff00a hiiren 0 rekisteri
mouse1 equ $dff00c hiiren 1 rekisteri
diskctrl equ $bfd100 levyaseman ohjausrekisteri
nappis equ 0 offset-arvot omaan taulukkoon
hiiri0 equ 2
hiiri1 equ 4
levyas equ 6
laskuri equ 8
raja equ 12
dmasailo equ 16
SAMMUTUS equ %0000000110100000 pysayttaa Copperin, Spritet ja nayton
INTB_VERTB equ 5 keskeytystyyppi Vertical Blanking
CTRL_C equ 12 bitti, joka ilmaisee CTRL+C:n painamisen
Start push d2-d7/a2-a6
move.l a0,a2
openlib Dos,cleanup
lib Dos,Output
move.l d0,_stdout
cmp.b #"?",(a2)
beq CommandLineHelp
move.l a2,a0
bsr ota_luku
mulu.w #50,d0
bvs viive_asetettu
beq viive_asetettu
move.l d0,IData+raja
viive_asetettu openlib Intuition,cleanup
openlib Gfx,cleanup
print <"Blank version 0.01b",13,10>,_stdout
;test for 2.0
move.l _IntuitionBase(pc),a6
move.w $14(a6),d0
cmp.w #36,d0
bcc StartPatch20
move.w #0,Kick
jmp Patch1
StartPatch20: print <"Using KickStart 2.0 - Patching new Open(Window/Screen)TagList and Write vectors",13,10>,_stdout
move.w #1,Kick
move.l _IntuitionBase(pc),a1
move.l #_LVOOpenScrTList,a0
lea.l OpScrTL(pc),a2
move.l a2,d0
lib Exec,SetFunction
move.l d0,OldOpScrTL
move.l _IntuitionBase(pc),a1
move.l #_LVOOpenWinTList,a0
lea.l OpWinTL(pc),a2
move.l a2,d0
lib Exec,SetFunction
move.l d0,OldOpWinTL
move.l _DosBase(pc),a1
move.l #_LVOWrite,a0
lea.l NewWrite(pc),a2
move.l a2,d0
lib Exec,SetFunction
move.l d0,OldWrite
Patch1: move.l _IntuitionBase(pc),a1
move.l #_LVOOpenScreen,a0
lea.l OpScr(pc),a2
move.l a2,d0
lib Exec,SetFunction
move.l d0,OldOpScr
move.l _IntuitionBase(pc),a1
move.l #_LVOOpenWindow,a0
lea.l OpWin(pc),a2
move.l a2,d0
lib Exec,SetFunction
move.l d0,OldOpWin
move.l _IntuitionBase(pc),a1
move.l #_LVOPrintIText,a0
lea.l PrIT(pc),a2
move.l a2,d0
lib Exec,SetFunction
move.l d0,OldPrIT
; move.l _IntuitionBase(pc),a1
; move.l #_LVODisplayBeep,a0
; lea.l DisB(pc),a2
; move.l a2,d0
; lib Exec,SetFunction
; move.l d0,OldDisB
move.l _GfxBase(pc),a1
move.l #_LVOText,a0
lea.l NewText(pc),a2
move.l a2,d0
lib Exec,SetFunction
move.l d0,OldText
moveq.l #INTB_VERTB,d0
lea keskstruc(pc),a1
lib Exec,AddIntServer
moveq.l #0,d0
bset.l #CTRL_C,d0
lib Exec,Wait
cleanup print <"***Break, Blank terminating",13,10>,_stdout
moveq.l #INTB_VERTB,d0
lea keskstruc(pc),a1
lib Exec,RemIntServer
cmp.w #1,Kick
bne cleanup1
move.l OldOpScrTL(pc),a0
move.l a0,d0
move.l _IntuitionBase(pc),a1
move.l #_LVOOpenScrTList,a0
lib Exec,SetFunction
move.l OldOpWinTL(pc),a0
move.l a0,d0
move.l _IntuitionBase(pc),a1
move.l #_LVOOpenWinTList,a0
lib Exec,SetFunction
move.l OldWrite(pc),a0
move.l a0,d0
move.l _DosBase(pc),a1
move.l #_LVOWrite,a0
lib Exec,SetFunction
cleanup1 move.l OldOpScr(pc),a0
move.l a0,d0
move.l _IntuitionBase(pc),a1
move.l #_LVOOpenScreen,a0
lib Exec,SetFunction
move.l OldOpWin(pc),a0
move.l a0,d0
move.l _IntuitionBase(pc),a1
move.l #_LVOOpenWindow,a0
lib Exec,SetFunction
move.l OldPrIT(pc),a0
move.l a0,d0
move.l _IntuitionBase(pc),a1
move.l #_LVOPrintIText,a0
lib Exec,SetFunction
; move.l OldDisB(pc),a0
; move.l a0,d0
; move.l _IntuitionBase(pc),a1
; move.l #_LVODisplayBeep,a0
; lib Exec,SetFunction
move.l OldText(pc),a0
move.l a0,d0
move.l _GfxBase(pc),a1
move.l #_LVOText,a0
lib Exec,SetFunction
closlib Intuition
closlib Gfx
cleanup_out closlib Dos
pull d2-d7/a2-a6
rts
ota_luku moveq.l #0,d0
moveq.l #0,d1
ota_seuraava move.b (a0)+,d1
cmp.b #'0',d1
bcs otettu
cmp.b #'9',d1
bhi otettu
sub.b #'0',d1
mulu.w #10,d0
add.l d1,d0
bra ota_seuraava
otettu rts
introutine push d4-d7
lea $dff000,a0
move.b keyboard,d4
move.w mouse0,d5
move.w mouse1,d6
move.b diskctrl,d7
cmp.w #$ff,Change
beq touhuaa
cmp.w hiiri0(a1),d5
bne touhuaa
cmp.b levyas(a1),d7
bne touhuaa
cmp.b nappis(a1),d4
bne touhuaa
cmp.w hiiri1(a1),d6
bne touhuaa
ei_puuhaa move.l laskuri(a1),d0
bmi nukkuu_jo
addq.l #1,d0
cmp.l raja(a1),d0
bcs ei_nukkumaan
nukkumaan bset.l #31,d0
move.l d0,laskuri(a1)
move.w DMACONR(a0),dmasailo(a1)
move.w #SAMMUTUS,DMACON(a0)
clr.w COLOR0(a0)
nukkuu_jo pull d4-d7
moveq.l #0,d0
rts
ei_nukkumaan move.l d0,laskuri(a1)
pull d4-d7
moveq.l #0,d0
rts
touhuaa move.b d4,nappis(a1)
move.w d5,hiiri0(a1)
move.w d6,hiiri1(a1)
move.b d7,levyas(a1)
move.w #$00,Change
tst.l laskuri(a1)
bpl ei_herata
heratys move.w dmasailo(a1),d0
bset.l #15,d0
move.w d0,DMACON(a0)
ei_herata clr.l laskuri(a1)
pull d4-d7
moveq.l #1,d0
rts
; Here starts the library changes
OpWin: move.w #$ff,Change
move.l OldOpWin(pc),a1
jmp (a1)
OpScr: move.w #$ff,Change
move.l OldOpScr(pc),a1
jmp (a1)
OpScrTL: move.w #$ff,Change
push a2
move.l OldOpScrTL(pc),a2
jsr (a2)
pull a2
rts
OpWinTL: move.w #$ff,Change
push a2
move.l OldOpWinTL(pc),a2
jsr (a2)
pull a2
rts
PrIT: move.w #$ff,Change
push a2
move.l OldPrIT(pc),a2
jsr (a2)
pull a2
rts
;DisB: move.w #$ff,Change
; move.l OldDisB(pc),a1
; jmp (a1)
NewText: move.w #$ff,Change
push a2
move.l OldText(pc),a2
jsr (a2)
pull a2
rts
NewWrite: move.w #$ff,Change
move.l OldWrite(pc),a1
jmp (a1)
ds.l 0
OldOpWin: dc.l 0
OldOpScr: dc.l 0
OldPrIT: dc.l 0
OldOpScrTL: dc.l 0
OldOpWinTL: dc.l 0
;OldDisB: dc.l 0
OldText: dc.l 0
OldWrite: dc.l 0
Change: dc.w 0
Kick: dc.w 0
_stdout: dc.l 0
ds.l 0
keskstruc dc.l 0 ;ln_Succ
dc.l 0 ;ln_Pred
dc.b 2 ;ln_Type = NT_INTERRUPT
dc.b -1 ;ln_Pri
dc.l intname ;ln_Name
dc.l IData ;data
dc.l introutine ;server
IData dc.w 0 vanha nappiksen arvo
dc.w 0 vanha hiiren 0 arvo
dc.w 0 vanha hiiren 1 arvo
dc.w 0 vanha levyaseman arvo
dc.l 0 odotettu aika
dc.l 3000 maksimi odotusaika
dc.w 0 dma-sailo
dc.w 0 varalla
intname dc.b 'Blank_Interrupt',0 keskeytyksen nimi
libnames kirjastojen osoittimet, nimet
INCLUDE "LWF:Blank/BlCommandLineHelp.i"
end