mirror of
https://github.com/ksherlock/tcpsnooper.git
synced 2025-03-12 15:30:40 +00:00
212 lines
2.8 KiB
NASM
212 lines
2.8 KiB
NASM
*=================================================
|
|
*
|
|
* cda.asm - Main code for TCP Snooper CDA
|
|
*
|
|
* Copyright (C) 2004-2006 Kelvin Sherlock
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*
|
|
*=================================================
|
|
*
|
|
* 2006.12.02 KS - Initial release as open source
|
|
*
|
|
*=================================================
|
|
|
|
case on
|
|
copy 13/ainclude/e16.gsos
|
|
copy 13/ainclude/e16.event
|
|
copy 13/ainclude/e16.memory
|
|
|
|
mcopy cda.mac
|
|
|
|
|
|
OS_KIND gequ $e100bc
|
|
RD80VID gequ $e0c01f
|
|
SET80VID gequ $e0c00d
|
|
|
|
|
|
StackSize gequ $0300
|
|
|
|
CDARoot start
|
|
|
|
dw 'TCP Snooper'
|
|
dc i4'CDAStart'
|
|
dc i4'CDAShutDown'
|
|
end
|
|
|
|
CDAStart start
|
|
|
|
using CDAData
|
|
|
|
phb
|
|
phk
|
|
plb
|
|
|
|
lda >OS_KIND ;; 00 = prodos, 01 == gsos
|
|
and #$00ff
|
|
bne gsos
|
|
brl exit
|
|
|
|
gsos anop
|
|
|
|
* allocate $300 of stack space.
|
|
|
|
pha
|
|
_MMStartUp
|
|
pla
|
|
sta MyID
|
|
|
|
pha
|
|
pha
|
|
~NewHandle #StackSize,MyID,#attrLocked+attrFixed+attrBank+attrPage,#0
|
|
bcc gotstack
|
|
pla
|
|
pla
|
|
brl exit
|
|
|
|
gotstack anop
|
|
|
|
tsc
|
|
sta OldStack
|
|
tcd
|
|
lda [1]
|
|
tcd
|
|
clc
|
|
adc #StackSize-1
|
|
|
|
* copy old stack to new stack
|
|
pha
|
|
sei
|
|
ldx #$fe
|
|
sloop lda >$000100,x
|
|
sta stack,x
|
|
dex
|
|
dex
|
|
bpl sloop
|
|
cli
|
|
pla
|
|
tcs
|
|
|
|
|
|
* short m
|
|
* sta >SET80VID
|
|
* long m
|
|
|
|
pha
|
|
pha
|
|
pha
|
|
_GetInputDevice
|
|
|
|
pha
|
|
pha
|
|
_GetInGlobals
|
|
|
|
pha
|
|
pha
|
|
pha
|
|
_GetOutputDevice
|
|
|
|
pha
|
|
pha
|
|
_GetOutGlobals
|
|
*
|
|
~SetInputDevice #0,#3
|
|
~SetInGlobals #$ff,#$80
|
|
|
|
~SetOutputDevice #0,#3
|
|
~SetOutGlobals #$ff,#$80
|
|
|
|
~InitTextDev #0
|
|
~InitTextDev #1
|
|
|
|
|
|
~WriteChar #$0C
|
|
|
|
jsl netstat
|
|
|
|
* restore, arguments already on stack.
|
|
|
|
_SetOutGlobals
|
|
_SetOutputDevice
|
|
_SetInGlobals
|
|
_SetInputDevice
|
|
|
|
~InitTextDev #0
|
|
~InitTextDev #1
|
|
|
|
|
|
* restore old stack
|
|
sei
|
|
ldx #$fe
|
|
rloop lda stack,x
|
|
sta >$000100,x
|
|
dex
|
|
dex
|
|
bpl rloop
|
|
lda OldStack
|
|
tcs
|
|
cli
|
|
_DisposeHandle ; * handle still on stack.
|
|
|
|
|
|
exit anop
|
|
plb
|
|
|
|
CDAShutDown entry
|
|
rtl
|
|
end
|
|
|
|
GetKey start
|
|
using CDAData
|
|
|
|
pea 0
|
|
_EMStatus
|
|
pla
|
|
beq metal
|
|
|
|
evloop anop
|
|
pha
|
|
~GetNextEvent #keyDownMask+autoKeyMask,#Event
|
|
pla
|
|
beq evloop
|
|
lda Event+omessage
|
|
rtl
|
|
|
|
metal anop
|
|
|
|
short m
|
|
|
|
mloop anop
|
|
|
|
lda >$e0c0000
|
|
bpl mloop
|
|
sta >$e0c010
|
|
|
|
long m
|
|
and #$007f
|
|
rtl
|
|
end
|
|
|
|
|
|
|
|
CDAData data
|
|
|
|
MyID ds 2
|
|
OldStack ds 2
|
|
|
|
Event ds 16
|
|
stack ds 256
|
|
end
|