home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CBM Funet Archive
/
cbm-funet-archive-2003.iso
/
cbm
/
crossplatform
/
emulators
/
Atari
/
c64.lzh
/
C64
/
SRC
/
C64.S
< prev
next >
Wrap
Text File
|
1986-02-06
|
40KB
|
1,739 lines
********************************************************************************
* *
* c64-eMULATOR v3.0 *
* {CBM-X} 1987 BY uWE sEIMET *
* bUCHENLOCHSTRAE 29 *
* 6750 kAISERSLAUTERN *
* *
* lINKREIHENFOLGE: c64.o,vc.o,emulator.o *
* *
********************************************************************************
gemdos = 1
xbios = 14
auxin = $03
auxout = $04
prline = $09
auxinst = $12
setdta = $1a
open = $3d
close = $3e
read = $3f
setblock= $4a
getrez = 4
sscreen = 5
setpalet= 6
setcolor= 7
rsconf = 15
ikbdws = 25
xbtimer = 31
supexec = 38
GLOBL PRINT
GLOBL RET64
GLOBL JMP64
GLOBL ITSCR
GLOBL GRAPH
GLOBL GRBSS
GLOBL OPAGE
GLOBL ITS
TEXT
MOVE.L SP,A5
LEA STACK,SP
MOVE.L 4(A5),A5
MOVE.L 12(A5),D0
ADD.L 20(A5),D0
ADD.L 28(A5),D0
ADD.L #$100,D0
MOVE.L D0,-(SP)
MOVE.L A5,-(SP)
CLR -(SP)
MOVE #setblock,-(SP)
TRAP #gemdos
ADD.L #12,SP
TST.L D0
BNE ERROR
PEA MSG(PC)
MOVE #prline,-(SP)
TRAP #gemdos
ADDQ.L #6,SP
MOVEQ #2,D2
LEA FILEADR(PC),A2
LEA LOADADR(PC),A3
LLOOP: CLR -(SP)
MOVE.L (A2)+,-(SP)
MOVE #open,-(SP)
TRAP #gemdos
ADDQ.L #8,SP
MOVE D0,D7
BMI ERROR
MOVE.L (A3)+,-(SP)
PEA $2000
MOVE D7,-(SP)
MOVE #read,-(SP)
TRAP #gemdos
ADD.L #12,SP
TST.L D0
BMI ERROR
MOVE D7,-(SP)
MOVE #close,-(SP)
TRAP #gemdos
ADDQ.L #4,SP
TST D0
BMI ERROR
DBF D2,LLOOP
LEA OPS,A0
MOVE.L A0,D0
ADD.L #$8000,D0
MOVE.L D0,OPAGE
LEA OP,A1
CLR D2
MOVE #255,D0
INEMU2: MOVE (A1,D2),D1
LEA (A1,D1),A2
MOVEQ #16,D1
INEMU1: MOVE.L (A2)+,(A0)+
DBF D1,INEMU1
ADDQ #2,D2
ADD.L #188,A0
DBF D0,INEMU2
MOVE #getrez,-(SP)
TRAP #xbios
ADDQ.L #2,SP
MOVE D0,REZ
LEA PRFONT,A0
LEA SET,A1
MOVE #511,D4
CMP #2,D0
BEQ CONV3
MOVE #$4E71,COLCOD
MOVE #$4E71,COLCO
ST REZFLG
CONV3: MOVEQ #7,D3
CONV2: MOVEQ #7,D2
MOVE.B (A0)+,D0
MOVE.B D0,D1
CONV1: TST.B REZFLG
BNE CONV4
ADD.B D1,D1
ROXL (A1)
CONV4: ADD.B D0,D0
ROXL (A1)+
DBF D2,CONV1
SUB.L #16,A1
DBF D3,CONV2
ADD.L #16,A1
DBF D4,CONV3
TST.B REZFLG
BEQ CONV5
LEA SET,A0
MOVE #4095,D0
CONV6: MOVE.B 1(A0),(A0)
ADDQ.L #2,A0
DBF D0,CONV6
CONV5: LEA SCTAB,A0
CLR D1
MOVEQ #24,D0
TABL: MOVE D1,(A0)+
ADD #1280,D1
DBF D0,TABL
LEA GRTAB+510,A0
MOVE #255,D3
BIT1: MOVEQ #7,D2
MOVE.B D3,D0
MOVE.B D3,D1
BIT0: ADD.B D0,D0
ROXL (A0)
ADD.B D1,D1
ROXL (A0)
DBF D2,BIT0
SUBQ.L #2,A0
DBF D3,BIT1
LEA OLDCOL+32,A3
MOVEQ #15,D3
SAVCOL: MOVE #-1,-(SP)
MOVE D3,-(SP)
MOVE #setcolor,-(SP)
TRAP #xbios
ADDQ.L #6,SP
MOVE D0,-(A3)
DBF D3,SAVCOL
PEA NEWCOL(PC)
MOVE #setpalet,-(SP)
TRAP #xbios
ADDQ.L #6,SP
MOVE.B #$06,C64+$D021
PEA MOFF(PC) *mAUS ABSCHALTEN
CLR -(SP)
MOVE #ikbdws,-(SP)
TRAP #xbios
ADDQ.L #8,SP
PEA BASE(PC)
MOVE #supexec,-(SP)
TRAP #xbios
ADDQ.L #6,SP
CMP #1,REZ
BNE REZOK
CLR -(SP)
PEA -1
PEA -1
MOVE #sscreen,-(SP)
TRAP #xbios
ADD.L #12,SP
REZOK: PEA INT(PC)
MOVE #$CC,-(SP)
MOVE #7,-(SP)
CLR -(SP)
MOVE #xbtimer,-(SP)
TRAP #xbios
ADD.L #12,SP
PEA DTA
MOVE #setdta,-(SP)
TRAP #gemdos
ADDQ.L #6,SP
LEA C64,A6
MOVEM.L (A6),D2-D7 *rEGISTER LSCHEN
BSET #31,D4
MOVE.L #$55390D00,FILE *fLOPPY-rESET
BSR VC1541
LEA AREA,A2
MOVE.L OPAGE(PC),A3
LEA C64+$FCE2,A5
MOVEQ #$10,D1
MOVE.B (A5)+,START+2
START: JMP 0(A3) *ERSTEN bEFEHL AUSFHREN
JMP64:
MOVE.L D2,D0
SUB #$FF81,D0
DIVU #3,D0
ADD D0,D0
ADD D0,D0
LEA KADR(PC),A0
MOVE.L (A0,D0),D0
BEQ EMUL
MOVE.L D0,A0
JSR (A0)
LEA AREA,A2
MOVEQ #$10,D1
JMP $6000(A3) *ZUM rts-oPCODE
EMUL: LEA (A6,D2.L),A5
MOVE.B (A5)+,EMU+2
EMU: JMP 0(A3)
NEWCOL: DC $000,$777,$600,$067,$707,$040,$003,$770
DC $740,$420,$721,$444,$333,$373,$457,$222
INT:
MOVE.L D0,-(SP)
MOVE.B C64+$D021,D0
AND #$0F,D0
ADD.B D0,D0
MOVE NEWCOL(PC,D0),$FF8240
MOVE.B C64+$0286,D0
CMP.B C0286(PC),D0
BEQ NOC0
MOVEM.L A0/D1-D2,-(SP)
BSR COLF1
MOVEM.L (SP)+,A0/D1-D2
NOC0: TST.L D4 *iNTERRUPTS ERLAUBT?
BMI INTE *NEIN-
MOVEM.L D2/D7/A0-A1/A6,-(SP)
LEA C64,A6
BSR UDTIM
TST.B $CC(A6)
BNE INT0
SUBQ.B #1,$CD(A6)
BNE INT0
MOVE.B #$14,$CD(A6)
CLR D7
MOVE.B $D3(A6),D7
CLR.L D0
MOVE.B $D2(A6),D0
ASL #8,D0
MOVE.B $D1(A6),D0
ADD D7,D0
MOVE.B (A6,D0),D7
MOVE.B $CF(A6),D2
CLR.B $CF(A6)
TST.B D2
BNE INT1
ADDQ.B #1,$CF(A6)
MOVE.B D7,$CE(A6)
INT1: MOVE.B $0288(A6),D2
ASL #8,D2
SUB D2,D0
DIVU #40,D0
MOVE D0,D2
ADD D2,D2
SWAP D0
EXT.L D0
MOVE D0,D7
COLCO: ADD D0,D0
MOVE.L SCBASE(PC),A0
LEA SCTAB,A1
ADD (A1,D2),D0
ADD.L D0,A0
TST.B REZFLG
BEQ CUR0
AND #$FE,D7
LEA COLTAB(PC),A1
ADD (A1,D7),A0
MOVEQ #7,D0
INTC: MOVE.L PLANE(PC),D2
MOVEP.L 0(A0),D7
NOT.L D7
MOVE.L D7,-(SP)
EOR.L D2,D7
AND.L (SP)+,D7
MOVEP.L D7,0(A0)
ADD.L #160,A0
DBF D0,INTC
BRA INT0
CUR0: MOVEQ #15,D0
INT2: NOT (A0)
ADD.L #80,A0
DBF D0,INT2
INT0: BSR SCN
MOVEM.L (SP)+,D2/D7/A0-A1/A6
INTE: MOVE.L (SP)+,D0
BCLR #5,$FFFA0F
RTE
SCAN:
TRAP #0
RTS
SCN:
CMP.B #$40,$CB(A6)
BEQ SCRT
MOVE.B $CB(A6),D0
CMP.B $C5(A6),D0
BEQ RP
MOVE.B #$10,$028C(A6)
BRA REP
RP: TST.B $028A(A6)
BMI RP1
BTST #6,$028A(A6)
BNE SCRT
MOVE.B STCODE(PC),D0
AND #$7F,D0
CMP.B #$7F,D0
BEQ REP
CMP.B #$14,D0
BEQ RP1
CMP.B #" ",D0
BEQ RP1
CMP.B #$1D,D0
BEQ RP1
CMP.B #$11,D0
BNE SCRT
RP1: TST.B $028C(A6)
BEQ RP0
SUBQ.B #1,$028C(A6)
BNE SRT
RP0: SUBQ.B #1,$028B(A6)
BNE SRT
MOVE.B #$04,$028B(A6)
CMP.B #$01,$C6(A6)
BGT SRT
REP: BTST #0,$484
BEQ NOCL
MOVE.L #CLICK,$E44
CLR.B $E48
NOCL: MOVE.B $C6(A6),D0
CMP.B $0289(A6),D0
BGE SCRT
EXT D0
LEA $0277(A6),A0
MOVE.B STCODE(PC),(A0,D0)
ADDQ.B #1,$C6(A6)
SCRT: MOVE.B $CB(A6),$C5(A6)
MOVE.B $028D(A6),$028E(A6)
SRT: RTS
KEYSCN:
TST.B $FFFC00
BEQ NOINT
MOVEM.L A0/A6/D0,-(SP)
LEA C64,A6
MOVE.B $FFFC02,D0
BTST #13,12(SP) *aUFRUF AUS sUPERVISOR-mODUS?
BNE NOF10 *JA-
CMP.B #$61,D0 *undo-tASTE?
BNE UNDO *NEIN-
CMP #$47FE,$0318(A6)
BNE TNMI
CMP.B #$7F,$91(A6)
BNE SCON3
MOVE.L #RS,14(SP)
BRA SCON3
TNMI: MOVE.L #NMI,14(SP)
BRA SCON3
UNDO: CMP.B #$62,D0 *help-tASTE?
BNE HELP *NEIN-
PEA MSG(PC)
MOVE #prline,-(SP)
TRAP #gemdos
ADDQ.L #6,SP
BRA SCON3
HELP: CMP.B #$3F,D0 *f5?
BNE NOF5 *NEIN-
ADDQ.B #1,C64+$D021
AND.B #$0F,C64+$D021
BRA SCON3
NOF5: CMP.B #$40,D0 *f6?
BNE NOF6 *NEIN-
ADDQ.B #1,C64+$0286
AND.B #$0F,C64+$0286
BRA SCON3
NOF6: CMP.B #$41,D0 *f7?
BNE NOF7 *NEIN-
ADDQ #1,$4EE
BRA SCON3
NOF7: CMP.B #$42,D0 *f8?
BNE NOF8 *NEIN-
BSR SWHI
CMP.B #"-",FF8
BEQ SWI0
MOVE.B #"-",FF8
BRA SCON3
SWI0: MOVE.B #"+",FF8
BRA SCON3
NOF8: CMP.B #$43,D0 *f9?
BNE NOF9 *NEIN-
BSR SWLO
CMP.B #"-",FF9
BEQ SWI
MOVE.B #"-",FF9
BRA SCON3
SWI: MOVE.B #"+",FF9
BRA SCON3
NOF9: CMP.B #$44,D0 *f10?
BNE NOF10 *NEIN-
MOVE.L #EXIT,14(SP)
BRA SCON3
NOF10: MOVE.B #$40,$CB(A6)
CMP.B #$2A,D0
BEQ KEY1
CMP.B #$36,D0
BNE KEY2
KEY1: BSET #0,$028D(A6)
LEA C64+$EBC2,A0
BRA SCON5
KEY2: CMP.B #$AA,D0
BEQ KEY3
CMP.B #$B6,D0
BNE KEY4
KEY3: BCLR #0,$028D(A6)
LEA C64+$EB81,A0
BRA SCON5
KEY4: CMP.B #$1D,D0
BNE CTRL1
BSET #2,$028D(A6)
LEA C64+$EC78,A0
BRA SCON5
CTRL1: CMP.B #$9D,D0
BNE CTRL2
BCLR #2,$028D(A6)
LEA C64+$EB81,A0
BRA SCON5
CTRL2: CMP.B #$38,D0
BNE ALT1
BSET #1,$028D(A6)
LEA C64+$EC03,A0
BRA SCON5
ALT1: CMP.B #$B8,D0
BNE ALT2
BCLR #1,$028D(A6)
LEA C64+$EB81,A0
BRA SCON5
ALT2: CMP.B #$4B,D0
BNE NOL
MOVE.B #$02,$CB(A6)
MOVE.B #$9D,D0
BRA SCON4
NOL: CMP.B #$48,D0
BNE NOU
MOVE.B #$07,$CB(A6)
MOVE.B #$91,D0
BRA SCON4
NOU: CMP.B #$52,D0
BNE NOI
CLR.B $CB(A6)
MOVE.B #$94,D0
BRA SCON4
NOI: CMP.B #$63,D0
BNE NOO
MOVE.B #$1B,$CB(A6)
MOVEQ #$28,D0
BRA SCON4
NOO: CMP.B #$64,D0
BNE SCON
MOVE.B #$20,$CB(A6)
MOVEQ #$29,D0
BRA SCON4
SCON5: MOVE.L A0,TAB
SCON: EXT D0
BMI SCON2
LEA KEY(PC),A0
MOVE.B (A0,D0),D0
MOVE.B D0,$CB(A6)
MOVE.L TAB(PC),A0
MOVE.B (A0,D0),D0
CMP.B #$FF,D0
BEQ SCON2
SCON4: MOVE.B D0,STCODE
SCON2: MOVE.B $028D(A6),D0
CMP.B #$03,D0
BNE SCON3
CMP.B $028E(A6),D0
BEQ SCON3
TST.B $0291(A6)
BMI SCON3
EOR.B #$02,C64+$D018
SCON3: MOVEM.L (SP)+,A0/A6/D0
NOINT: BCLR #6,$FFFA11
RTE
NMI:
CLR.L D4
BSET #31,D4
LEA AREA,A2
MOVE.L OPAGE(PC),A3
LEA C64,A6
CLR.L D2
CLR.L D3
CLR.L D5
CLR.L D6
CLR.L D7
MOVEQ #$10,D1
SUB.L A6,A5
MOVE A5,-(A2)
MOVE.B (A2)+,(A4)
MOVE.B (A2)+,-(A4)
MOVE.B D4,-(A4)
TST.B -(A4)
LEA C64+$FE44,A5
BRA START
RS:
CLR.L D4
BSET #31,D4
LEA AREA,A2
MOVE.L OPAGE(PC),A3
LEA C64,A6
CLR.L D2
CLR.L D3
CLR.L D5
CLR.L D6
CLR.L D7
MOVEQ #$10,D1
SUB.L A6,A5
MOVE A5,-(A2)
MOVE.B (A2)+,(A4)
MOVE.B (A2)+,-(A4)
MOVE.B D4,-(A4)
MOVE.B D5,-(A4)
MOVE.B D6,-(A4)
MOVE.B D7,-(A4)
TST.B -(A4)
LEA C64+$FE66,A5
BRA START
INIT:
MOVEQ #$0E,D0
BSR COLF
CLS:
MOVE.B $0288(A6),D7
OR.B #$80,D7
CLR.B D5
CLR.B D6
LEA $D9(A6),A0
CLR0: MOVE.B D7,(A0,D6)
ADD.B #$28,D5
BCC CLR1
ADDQ.B #1,D7
CLR1: ADDQ.B #1,D6
CMP.B #$1A,D6
BNE CLR0
ST (A0,D6)
MOVEQ #$18,D6
CLR2: BSR CLRLINE
SUBQ.B #1,D6
BPL CLR2
MOVE.L SCBASE(PC),A1
MOVE #7999,D0
CCL: CLR.L (A1)+
DBF D0,CCL
HOME:
CLR.B $D3(A6)
CLR.B $D6(A6)
CURPOS:
MOVE.B $D6(A6),D6
CURP1: LEA $D9(A6),A0
CP1: TST.B (A0,D6)
BMI CP0
ADD.B #$28,$D3(A6)
SUBQ.B #1,D6
BPL CP1
CP0: MOVE.B (A0,D6),D5
AND.B #$03,D5
OR.B $0288(A6),D5
MOVE.B D5,$D2(A6)
LEA C64+$ECF0,A1
MOVE.B (A1,D6),$D1(A6)
MOVEQ #$27,D5
ADDQ.B #1,D6
CP3: TST.B (A0,D6)
BMI CP2
ADD.B #$28,D5
ADDQ.B #1,D6
BPL CP3
CP2: MOVE.B D5,$D5(A6)
RTS
GETCHAR:
LEA $0277(A6),A0
MOVE.B (A0),D5
CLR D0
GC: MOVE.B 1(A0),(A0)+
ADDQ.B #1,D0
CMP.B $C6(A6),D0
BNE GC
SUBQ.B #1,$C6(A6)
BCLR #31,D4
AND.B #$EE,D4
RTS
WAIT:
BSR BSSC
BSIN: MOVE.B $C6(A6),D5
MOVE.B D5,$CC(A6)
MOVE.B D5,$0292(A6)
BEQ BSIN
BSET #31,D4
TST.B $CF(A6)
BEQ BS0
CLR.B $CF(A6)
MOVE.B $CE(A6),D5
BSR OUTPUT
BS0: BSR GETCHAR
CMP.B #$83,D5
BNE BS4
MOVEQ #$09,D6
BSET #31,D4
MOVE.B D6,$C6(A6)
LEA C64+$ECE6,A0
LEA $0276(A6),A1
LDRN: MOVE.B (A0,D6),(A1,D6)
SUBQ.B #1,D6
BNE LDRN
BRA BSIN
BS4: CMP.B #$0D,D5
BNE WAIT
MOVE.B $D5(A6),D7
MOVE.B D7,$D0(A6)
MOVE.B $D2(A6),D2
ASL #8,D2
MOVE.B $D1(A6),D2
LEA (A6,D2.L),A0
BS2: MOVE.B (A0,D7),D5
CMP.B #" ",D5
BNE BS1
SUBQ.B #1,D7
BNE BS2
BS1: ADDQ.B #1,D7
MOVE.B D7,$C8(A6)
CLR.B $0292(A6)
CLR.B $D3(A6)
CLR.B $D4(A6)
TST.B $C9(A6)
BMI BS3
MOVE.B $D6(A6),D6
LEA $D9(A6),A0
BS7: TST.B (A0,D6)
BMI BS6
SUBQ.B #1,D6
BNE BS7
BS6: BSR VRAM
CMP.B $C9(A6),D6
BNE BS3
MOVE.B $CA(A6),D5
MOVE.B D5,$D3(A6)
CMP.B $C8(A6),D5
BLT BS3
BRA BS8
BASN:
MOVEM D6-D7,-(SP)
TST.B $D0(A6)
BEQ BSIN
BS3: MOVE.B $D3(A6),D7
MOVE.B $D2(A6),D0
ASL #8,D0
MOVE.B $D1(A6),D0
ADD D7,D0
MOVE.B (A6,D0),D5
MOVE.B D5,D0
AND.B #$3F,D5
BTST #6,D0
BEQ BAS0
OR.B #$80,D5
BAS0: TST.B D0
BPL BAS1
TST.B $D4(A6)
BNE BAS2
BAS1: BTST #5,D0
BNE BAS2
OR.B #$40,D5
BAS2: ADDQ.B #1,$D3(A6)
CMP.B #$22,D5
BNE BAS3
EOR.B #$01,$D4(A6)
BAS3: CMP.B $C8(A6),D7
BNE BAS4
BS8: CLR.B $D0(A6)
MOVEQ #$0D,D5
CMP.B #$03,$99(A6)
BEQ BAS6
CMP.B #$03,$9A(A6)
BEQ BAS4
BAS6: BSR BSSC
BAS4: MOVE.B D5,$D7(A6)
MOVEM (SP)+,D6-D7
CMP.B #$DE,D5
BNE BAS5
ST D5
BAS5: AND.B #$EE,D4
RTS
CHROUT:
OR.B #$40,D5
CHROUT1:
TST.B $C7(A6)
BEQ NORV
CHROUT2:
OR.B #$80,D5
NORV: TST.B $D8(A6)
BEQ NOIN
SUBQ.B #1,$D8(A6)
NOIN: BSR OUTPUT
BSR MSB
LIN: MOVEM (SP)+,D5-D7
TST.B $D8(A6)
BEQ NON
CLR.B $D4(A6)
NON: BCLR #31,D4
TST.B D5
MOVE SR,D4
RTS
MSB: BSR MSB0
ADDQ.B #1,$D3(A6)
MOVE.B $D5(A6),D5
CMP.B $D3(A6),D5
BGE MSB9
CMP.B #$4F,D5
BEQ MSB4
TST.B $0292(A6)
BNE INSL
MOVE.B $D6(A6),D6
CMP.B #$19,D6
BLT MSB5
BSR SCROLL
SUBQ.B #1,$D6(A6)
MOVE.B $D6(A6),D6
MSB5: LEA $D9(A6),A0
AND.B #$7F,(A0,D6)
OR.B #$80,1(A0,D6)
ADD.B #$28,$D5(A6)
MB6: TST.B (A0,D6)
BMI VRAM
SUBQ.B #1,D6
BNE MB6
BRA VRAM
MSB4: SUBQ.B #1,$D6(A6)
BSR MSB8
CLR.B $D3(A6)
MSB9: RTS
BACK:
MOVE.B $D6(A6),D6
BNE BCK0
MOVE.B D6,$D3(A6)
ADDQ.L #4,SP
BRA LIN
BCK0: SUBQ.B #1,D6
MOVE.B D6,$D6(A6)
BSR CURP1
MOVE.B $D5(A6),$D3(A6)
RTS
BSOUT:
CMP.B #$03,$9A(A6)
BEQ BSSC
BGT IECOUT
CMP.B #$02,$9A(A6)
BEQ RSOUT
AND.B #$EE,D4
RTS
BSSC: MOVEM D5-D7,-(SP)
CLR.B $D0(A6)
MOVE.B $D3(A6),D7
MOVE.B D5,$D7(A6)
BMI GRCODE
CMP.B #$0D,D5
BEQ CARRET
CMP.B #" ",D5
BLT CD
CMP.B #$60,D5
BLT GR1
AND.B #$DF,D5
BRA GR4
GR1: AND.B #$3F,D5
GR4: CMP.B #$22,D5
BNE CHROUT1
EOR.B #$01,$D4(A6)
BRA CHROUT1
CD: TST.B $D8(A6)
BNE CHROUT2
CMP.B #$14,D5
BNE DELC
TST.B D7
BNE DEL0
BSR BACK
BRA DEL1
DEL0: BSR MSB7
SUBQ.B #1,D7
MOVE.B D7,$D3(A6)
MOVE.B $D2(A6),D2
ASL #8,D2
MOVE.B $D1(A6),D2
LEA (A6,D2.L),A1
DEL2: MOVE.B 1(A1,D7),D5
BSR PRSCR
ADDQ.B #1,D7
CMP.B $D5(A6),D7
BNE DEL2
MOVEQ #$20,D5
BSR PRSCR
BRA LIN
DEL1: MOVE.B #" ",(A0,D7)
BRA LIN
DELC: TST.B $D4(A6)
BNE CHROUT2
CMP.B #$12,D5
BNE REVC
MOVE.B D5,$C7(A6)
REVC: CMP.B #$13,D5
BNE HOMC
BSR HOME
HOMC: CMP.B #$1D,D5
BNE RGTC
ADDQ.B #1,D7
BSR MSB0
MOVE.B D7,$D3(A6)
SUBQ.B #1,D7
CMP.B $D5(A6),D7
BLT LIN
SUBQ.B #1,$D6(A6)
BSR MSB8
CLR.B $D3(A6)
BRA LIN
RGTC: CMP.B #$11,D5
BNE DWNC
MOVE.B D7,D5
ADD.B #$28,D5
MOVE.B D5,D7
ADDQ.B #1,$D6(A6)
CMP.B $D5(A6),D5
BGT DW0
MOVE.B D7,$D3(A6)
BRA LIN
DW0: SUBQ.B #1,$D6(A6)
DW2: SUB.B #$28,D5
BLT DW1
MOVE.B D5,$D3(A6)
BNE DW2
DW1: BSR MSB8
BRA LIN
DWNC: BSR TSTCOL
CMP.B #$0E,D5
BNE NSML
OR.B #$02,C64+$D018
BRA LIN
NSML: CMP.B #$08,D5
BNE NLCK
OR.B #$80,$0291(A6)
BRA LIN
NLCK: CMP.B #$09,D5
BNE LIN
AND.B #$7F,$0291(A6)
BRA LIN
GRCODE:
AND.B #$7F,D5
CMP.B #$7F,D5
BNE NOPI
MOVEQ #$5E,D5
NOPI: CMP.B #" ",D5
BGE CHROUT
CMP.B #$0D,D5
BEQ CARRET
TST.B $D4(A6)
BEQ GRC1
CUP: OR.B #$40,D5
BRA CHROUT2
GRC1: CMP.B #$14,D5
BNE NOINS
MOVE.B $D5(A6),D7
MOVE.B $D2(A6),D2
ASL #8,D2
MOVE.B $D1(A6),D2
LEA (A6,D2.L),A1
CMP.B #" ",(A1,D7)
BNE INS1
CMP.B $D3(A6),D7
BNE INS2
INS1: CMP.B #$4F,D7
BEQ LIN
MOVE.L A1,-(SP)
BSR INSLINE
SUB #40,D2
MOVE.L (SP)+,A1
INS2: MOVE.B $D5(A6),D7
INS3: MOVE.B -1(A1,D7),D5
BSR PRSCR
SUBQ.B #1,D7
CMP.B $D3(A6),D7
BNE INS3
MOVEQ #$20,D5
BSR PRSCR
ADDQ.B #1,$D8(A6)
BRA LIN
NOINS: TST.B $D8(A6)
BNE CUP
CMP.B #$11,D5
BNE UPC
TST.B $D6(A6)
BEQ LIN
SUBQ.B #1,$D6(A6)
MOVE.B $D3(A6),D5
SUB.B #$28,D5
BLT CP
MOVE.B D5,$D3(A6)
BPL LIN
CP: BSR CURPOS
BRA LIN
UPC: CMP.B #$12,D5
BNE RVCD
CLR.B $C7(A6)
RVCD: CMP.B #$1D,D5
BNE LFTC
TST.B D7
BNE LFT0
BSR BACK
BRA LIN
LFT0: BSR MSB7
SUBQ.B #1,D7
MOVE.B D7,$D3(A6)
BRA LIN
LFTC: CMP.B #$13,D5
BNE CLCD
BSR CLS
BRA LIN
CLCD: OR.B #$80,D5
BSR TSTCOL
CMP.B #$8E,D5
BNE LIN
BCLR #1,C64+$D018
BRA LIN
TSTCOL:
LEA C64+$E8DA,A0
MOVEQ #15,D0
FCOL: CMP.B (A0,D0),D5
BEQ COLF
DBF D0,FCOL
RTS
COLF: MOVE.B D0,$0286(A6)
COLF1: ADD D0,D0
ADD D0,D0
MOVE.L PENCOL(PC,D0),PLANE
RTS
PENCOL: DC.L $FFFF0000,$00FFFFFF,$FF00FFFF,$0000FFFF
DC.L $FFFF00FF,$00FF00FF,$FF0000FF,$FFFFFFFF
DC.L $FF00FFFF,$00FFFF00,$FF00FF00,$0000FF00
DC.L $000000FF,$00FF0000,$FF000000,$00FF0000
PRSCR:
MOVE.B D5,(A1,D7)
MOVE.L A1,-(SP)
MOVE.L D7,D0
ADD D2,D0
BSR TOSCR
MOVE.L (SP)+,A1
RTS
CARRET:
CLR.B $D8(A6)
CLR.B $C7(A6)
CLR.B $D4(A6)
CLR.B $D3(A6)
BSR MSB8
BRA LIN
MSB8: CLR.B $C9(A6)
MOVE.B $D6(A6),D6
N0D2: ADDQ.B #1,D6
CMP.B #$19,D6
BNE N0D1
BSR SCROLL
N0D1: LEA $D9(A6),A0
TST.B (A0,D6)
BPL N0D2
MOVE.B D6,$D6(A6)
BRA CURPOS
MSB7:
MOVEQ #$02,D6
CLR.B D5
MS0: CMP.B $D3(A6),D5
BEQ MS1
ADD.B #$28,D5
SUBQ.B #1,D6
BNE MS0
RTS
MS1: SUBQ.B #1,$D6(A6)
RTS
MSB0:
MOVEQ #$02,D6
MOVEQ #$27,D5
MB8: CMP.B $D3(A6),D5
BEQ MB9
ADD.B #$28,D5
SUBQ.B #1,D6
BNE MB8
RTS
MB9: MOVE.B $D6(A6),D6
CMP.B #$19,D6
BEQ MB7
ADDQ.B #1,$D6(A6)
MB7: RTS
SCROLL:
MOVE.L $AC(A6),-(SP)
LL5: ST D6
SUBQ.B #1,$D6(A6)
SUBQ.B #1,$C9(A6)
SUBQ.B #1,$02A5(A6)
LL1: ADDQ.B #1,D6
BSR VRAM
CMP.B #$18,D6
BGE LL0
LEA C64+$ECF1,A0
MOVE.B (A0,D6),$AC(A6)
LEA $DA(A6),A0
MOVE.B (A0,D6),D5
BSR MOVEUP
BRA LL1
LL0: BSR CLRLINE
CLR.B D6
LEA $D9(A6),A0
LL4: MOVE.B (A0,D6),D5
AND.B #$7F,D5
MOVE.B 1(A0,D6),D7
BPL LL3
OR.B #$80,D5
LL3: MOVE.B D5,(A0,D6)
ADDQ.B #1,D6
CMP.B #$18,D6
BNE LL4
OR.B #$80,$F1(A6)
TST.B $D9(A6)
BPL LL5
ADDQ.B #1,$D6(A6)
ADDQ.B #1,$02A5(A6)
BTST #2,$028D(A6)
BEQ LL7
MOVEQ #-1,D0
LL8: NOP
DBF D0,LL8
LL7: BTST #1,$028D(A6)
BNE LL7
MOVE.B $D6(A6),D6
MOVE.L (SP)+,$AC(A6)
RTS
INSLINE:
MOVE.B $D6(A6),D6
INSL: LEA $D9(A6),A0
IL0: ADDQ.B #1,D6
TST.B (A0,D6)
BPL IL0
MOVE.B D6,$02A5(A6)
CMP.B #$18,D6
BLE INSLIN
BSR SCROLL
MOVE.B $02A5(A6),D6
SUBQ.B #1,D6
SUBQ.B #1,$D6(A6)
BRA MSB5
INSLIN:
MOVE.L $AC(A6),-(SP)
MOVEQ #$19,D6
INSL1: SUBQ.B #1,D6
BSR VRAM
CMP.B $02A5(A6),D6
BLE INL0
LEA $D8(A6),A0
LEA C64+$ECEF,A1
MOVE.B (A1,D6),$AC(A6)
MOVE.B (A0,D6),D5
ST MFLG
BSR MOVEUP
BRA INSL1
INL0: BSR CLRLINE
MOVEQ #$17,D6
INS6: CMP.B $02A5(A6),D6
BLT INS8
MOVE.B 2(A0,D6),D5
AND.B #$7F,D5
TST.B 1(A0,D6)
BPL INS7
OR.B #$80,D5
INS7: MOVE.B D5,2(A0,D6)
SUBQ.B #1,D6
BNE INS6
INS8: MOVE.B $02A5(A6),D6
BSR MSB5
MOVE.L (SP)+,$AC(A6)
RTS
MOVEUP:
AND.B #$03,D5
OR.B $0288(A6),D5
MOVE.B D5,$AD(A6)
MOVEQ #$27,D7
MOVE.B $AD(A6),D2
ASL #8,D2
MOVE.B $AC(A6),D2
LEA (A6,D2.L),A0
MOVE.B $D2(A6),D2
ASL #8,D2
MOVE.B $D1(A6),D2
LEA (A6,D2.L),A1
MOVU: MOVE.B (A0,D7),(A1,D7)
SUBQ.B #1,D7
BPL MOVU
CLR.L D0
MOVE.B D6,D0 *nUMMER DER bILDSCHIRMZEILE
MULU #1280,D0
MOVE.L SCBASE(PC),A0
ADD.L D0,A0
MOVE.L A0,A1
ADD.L #1280,A1
MOVE #319,D0
TST.B MFLG
BEQ MOVU1
CLR.B MFLG
SUB.L #1280,A0
SUB.L #1280,A1
EXG.L A0,A1
MOVU1: MOVE.L (A1)+,(A0)+
DBF D0,MOVU1
RTS
VRAM:
LEA $D9(A6),A0
LEA C64+$ECF0,A1
MOVE.B (A1,D6),$D1(A6)
MOVE.B (A0,D6),D5
AND.B #$03,D5
OR.B $0288(A6),D5
MOVE.B D5,$D2(A6)
RTS
CLRLINE:
CLR.L D0
MOVE.B D6,D0 *nUMMER DER bILDSCHIRMZEILE
MULU #1280,D0
MOVE.L SCBASE(PC),A0
ADD.L D0,A0
MOVE #319,D0
CLL1: CLR.L (A0)+
DBF D0,CLL1
MOVEQ #$27,D7
BSR VRAM
MOVE.B $D2(A6),D2
ASL #8,D2
MOVE.B $D1(A6),D2
LEA (A6,D2.L),A0
CLLN: MOVE.B #" ",(A0,D7)
SUBQ.B #1,D7
BPL CLLN
RTS
RSIN:
MOVE #auxin,-(SP)
TRAP #gemdos
ADDQ.L #2,SP
MOVE.B D0,D5
BRA RT
RSOUT:
MOVE D5,-(SP)
MOVE #auxout,-(SP)
TRAP #gemdos
ADDQ.L #4,SP
BRA RT
TALK:
BRA RT
LSTN:
CMP.B #$04,D5 *dRUCKER?
BEQ RT *JA-
MOVE.L #FILE,COMPNT
RT: AND.B #$EE,D4
RTS
SECLSTN:
MOVE.B D5,$B9(A6)
RTS
SECTALK:
MOVE.B D5,$B9(A6)
RTS
IECOUT:
CMP.B #$04,$BA(A6) *dRUCKER?
BNE VCWRITE *NEIN-
BSR PRINTER
BRA RT
UNTALK:
BRA RT
UNLSTN:
CMP.B #$04,$BA(A6) *dRUCKER?
BEQ RT *JA-
MOVE.L COMPNT,A0
CLR.B (A0)
BRA VC1541
IECIN:
CMP.B #$04,$BA(A6) *dRUCKER?
BEQ RT *JA-
BRA VCREAD
OPEN:
MOVE #$F70A,D0 *"not input file"
MOVE.B $B8(A6),D6
BEQ RET64
MOVE #$F6FE,D0 *"file open"
BSR SLOG *LOGISCHE fILENUMMER SUCHEN
BEQ RET64
MOVE #$F6FB,D0 *"too many files"
MOVE.B $98(A6),D6
CMP.B #10,D6
BCC RET64
ADDQ.B #1,$98(A6)
LEA $0259(A6),A0
MOVE.B $B8(A6),(A0,D6) *LOGISCHE fILENUMMER
OR.B #$60,$B9(A6)
MOVE.B $B9(A6),20(A0,D6) *sEKUNDRADRESSE
MOVE.B $BA(A6),10(A0,D6) *gERTEADRESSE
BEQ OPSC *bILDSCHIRMFILE-
CMP.B #$02,$BA(A6) *rs232?
BEQ RSOPEN *JA-
MOVE.B $B9(A6),D0
AND.B #$0F,D0
CMP.B #$0F,D0 *kOMMANDOKANAL?
BEQ COMCAN *JA-
MOVE.B $B8(A6),D0 *LOGISCHE fILENUMMER
BSR VCOPEN
OPSC: BRA RT
COMCAN: MOVE.B $B7(A6),D7
BEQ RT *KEIN kOMMANDOSTRING-
MOVE.B $BA(A6),D5
BSR LSTN
MOVE.B $BC(A6),D2
ASL #8,D2
MOVE.B $BB(A6),D2
COPCOM: MOVE.B (A6,D2.L),D5
BSR IECOUT *sTRING AN fLOPPY SENDEN
ADDQ #1,D2
SUBQ.B #1,D7
BNE COPCOM
BRA UNLSTN
RSOPEN:
CLR.B $0297(A6) *rs232 sTATUS LSCHEN
TST.B $B7(A6)
BEQ NORSN
CLR.L D1
MOVE.B $BC(A6),D1
ASL #8,D1
MOVE.B $BB(A6),D1
ADD #3,D1
LEA $0293(A6),A0
MOVEQ #3,D0
COPRS: MOVE.B (A6,D1.L),(A0,D0)
SUBQ #1,D1
DBF D0,COPRS
NORSN: MOVE.B (A0),D5
AND.B #$0F,D5 *bITS FR bAUD-rATE
MOVE D5,D0
ADD D0,D0
MOVEQ #-1,D1
MOVE D1,-(SP)
MOVE D1,-(SP)
MOVE D1,-(SP)
MOVE #%10001000,-(SP)
CLR -(SP)
MOVE BAUD(PC,D0),-(SP) *bAUD-rATE
MOVE #rsconf,-(SP)
TRAP #xbios
ADD.L #14,SP
BRA RT
BAUD: DC -1,15,14,13,12,11,9,8,7,6,4,3,2,-1,1,0
CLOSE:
BSR SLOGA *LOGISCHE fILENUMMER SUCHEN
BNE CLRTS *NICHT GEFUNDEN-
BSR SFPAR *fILEPARAMETER SETZEN
CMP.B #$03,$BA(A6)
BCS CLOS *KEIN iec-fILE-
MOVE.B $B9(A6),D0
AND.B #$0F,D0
CMP.B #$0F,D0 *kOMMANDOKANAL?
BEQ CLOS *JA-
MOVE.B $B8(A6),D0 *LOGISCHE fILENUMMER
BSR VCCLOSE
CLOS: SUBQ.B #1,$98(A6)
CMP.B $98(A6),D6
BEQ CLRTS
LEA $0259(A6),A0
MOVE.B $98(A6),D7
MOVE.B (A0,D7),(A0,D6)
MOVE.B 10(A0,D7),10(A0,D6)
MOVE.B 20(A0,D7),20(A0,D6)
CLRTS: BRA RT
CHKIN:
MOVE #$F701,D0 *"file not open"
BSR SLOG *LOGISCHE fILENUMMER SUCHEN
BNE RET64
BSR SFPAR *fILEPARAMETER SETZEN
MOVE.B $BA(A6),D5
CMP.B #$08,D5 *fLOPPY?
BLT CHKSCR *NEIN-
MOVE.B $B8(A6),D0 *LOGISCHE fILENUMMER
BSR VCCHKIN
CHKSCR: MOVE.B D5,$99(A6)
BRA RT
CKOUT:
MOVE #$F701,D0 *"file not open"
BSR SLOG *LOGISCHE fILENUMMER SUCHEN
BNE RET64
BSR SFPAR
MOVE #$F70D,D0 *"not output file"
MOVE.B $BA(A6),D5
BEQ RET64
CMP.B #$08,D5 *fLOPPY?
BLT CKOUT2 *NEIN-
MOVE.B $B8(A6),D0
BSR VCKOUT
CKOUT2: MOVE.B D5,$9A(A6)
BRA RT
SFPAR:
LEA $0259(A6),A0
MOVE.B (A0,D6),$B8(A6) *LOGISCHE fILENUMMER
MOVE.B 10(A0,D6),$BA(A6) *gERTEADRESSE
MOVE.B 20(A0,D6),$B9(A6) *sEKUNDRADRESSE
RTS
SLOG:
CLR.B $90(A6)
MOVE.B D6,D5
SLOGA: LEA $0259(A6),A0
MOVE.B $98(A6),D6
SLOG0: SUBQ.B #1,D6
BMI SLOG1
CMP.B (A0,D6),D5
BNE SLOG0
SLOG1: RTS
OUTPUT:
CLR.L D0
MOVE.B #$02,$CD(A6)
MOVE.B $D2(A6),D0
ASL #8,D0
MOVE.B $D1(A6),D0
MOVE.B $D3(A6),D7
ADD D7,D0
MOVE.B D5,(A6,D0)
TOSCR: MOVE.B $0288(A6),D1
ASL #8,D1
SUB D1,D0
ITSCR: DIVU #40,D0
MOVE D0,D1
ADD D1,D1
SWAP D0
EXT.L D0
MOVE.B D0,D3
COLCOD: ADD D0,D0
MOVE.L SCBASE(PC),A0
LEA SCTAB,A1
ADD (A1,D1),D0
ADD.L D0,A0
MOVE D5,D0
ASL #4,D0
BTST #1,C64+$D018
BEQ BIG
ADD.L #$1000,D0
BIG: LEA SET,A1
ADD.L D0,A1
MOVEQ #7,D0
TST.B REZFLG
BNE CHR1
CHR: MOVE (A1),(A0)
MOVE (A1)+,80(A0)
ADD.L #160,A0
DBF D0,CHR
RTS
CHR1: AND #$FE,D3
ADD COLTAB(PC,D3),A0
CHR2: MOVE (A1),D1
SWAP D1
MOVE (A1)+,D1
MOVE.L D1,-(SP)
MOVE.L PLANE(PC),D3
EOR.L D3,D1
AND.L (SP)+,D1
MOVEP.L D1,0(A0)
ADD.L #160,A0
DBF D0,CHR2
CLR.L D3
RTS
COLTAB: DC 0,6,12,18,24,30,36,42,48,54
DC 60,66,72,78,84,90,96,102,108,114
ITS: BSR ITSCR
JMP ITRET
GRAPH:
DIVU #320,D2 *bILDSCHIRMZEILE
MOVE D2,D0
TST.B REZFLG
BNE COLGR
ASL #4,D0 *GROBE pIXELZEILE
CLR D2
SWAP D2
DIVU #8,D2
MOVE D2,D1 *bILDSCHIRMSPALTE
SWAP D2 *FEINE pIXELZEILE
ADD D2,D0 *Y-kOORDINATE
ADD D2,D0
ADD D1,D1 *GROBE pIXELSPALTE
MULU #80,D0
MOVE.L SCBASE(PC),A0
ADD.L D0,A0
ADD D1,A0
LEA GRTAB,A1
ADD D5,D5
MOVE (A1,D5),(A0)
MOVE (A1,D5),80(A0)
CLR.L D2
JMP ITRET
COLGR: ASL #3,D0 *GROBE pIXELZEILE
CLR D2
SWAP D2
DIVU #8,D2
MOVE D2,D1 *bILDSCHIRMSPALTE
SWAP D2 *FEINE pIXELZEILE
ADD D2,D0 *Y-kOORDINATE
MULU #160,D0
ADD D1,D0
AND #$FE,D1
LEA COLTAB(PC),A0
ADD (A0,D1),D0
MOVE.L SCBASE(PC),A0
ADD.L D0,A0
MOVE.B D5,D0
ASL #8,D0
MOVE.B D5,D0
MOVE D0,D5
SWAP D5
MOVE D0,D5
MOVEP.L D5,0(A0)
CLR.L D5
CLR.L D2
JMP ITRET
GET:
MOVE.B $99(A6),D5
BNE GET9
TST.B $C6(A6)
BEQ GRT
BSET #31,D4
BRA GETCHAR
GET9: CMP.B #$02,D5
BNE GET0
MOVE #auxinst,-(SP)
TRAP #gemdos
ADDQ.L #2,SP
TST D0
BEQ NOCHR
AND.B #$F7,$0297(A6)
MOVE #auxin,-(SP)
TRAP #gemdos
ADDQ.L #2,SP
MOVE.B D0,D5
RTS
NOCHR: OR.B #$08,$0297(A6)
CLR.B D5
RTS
GRT: MOVE SR,D4
BRA RT
BASIN:
MOVE.B $99(A6),D5
BNE GET0
MOVE.B $D3(A6),$CA(A6)
MOVE.B $D6(A6),$C9(A6)
BRA BASN
GET0: CMP.B #$03,D5
BNE GET1
MOVE.B D5,$D0(A6)
MOVE.B $D5(A6),$C8(A6)
BRA BASN
GET1: CMP.B #$02,D5
BEQ RSIN
TST.B $90(A6)
BEQ IECIN
MOVEQ #$0D,D5
BRA RT
UDTIM:
ADDQ.B #1,$A2(A6)
BNE TI
ADDQ.B #1,$A1(A6)
BNE TI
ADDQ.B #1,$A0(A6)
TI: MOVE.B $A2(A6),D2
SUBQ.B #1,D2
MOVE.B $A1(A6),D2
MOVEQ #$1A,D0
SUBX.B D0,D2
MOVE.B $A0(A6),D2
MOVEQ #$4F,D0
SUBX.B D0,D2
BLT UD
CLR $A0(A6)
CLR.B $A2(A6)
UD: CLR.B $91(A6)
CMP.B #$3F,$CB(A6)
BNE UDR
BTST #0,$028D(A6)
BNE UDR
MOVE.B #$7F,$91(A6)
UDR: RTS
PRINT:
TST.B $9D(A6)
BPL PRI
MOVEM D5-D7,-(SP)
SYS: MOVE.B (A2)+,D5
BEQ PRG
BMI EPR
BSR BSOUT
BRA SYS
EPR: AND.B #$7F,D5
BSR BSOUT
PRG: MOVEM (SP)+,D5-D7
PRI: RTS
BASE:
SUB.L A0,A0
MOVE.L $44E(A0),SCBASE
MOVE.L #SCN,$80(A0)
MOVE.L $118(A0),KEYSAV
MOVE.L #KEYSCN,$118(A0)
MOVE.L $400(A0),EVNTSAV
MOVE.L $404(A0),CRITSAV
MOVE.L #CRIT,$400(A0)
MOVE.L #CRIT,$404(A0)
CLR $454(A0)
CRIT: RTS
CON: SUB.L A0,A0
MOVE.L KEYSAV,$118(A0)
MOVE.L EVNTSAV,$400(A0)
MOVE.L CRITSAV,$404(A0)
MOVE #$08,$454(A0)
RTS
RET64:
SUBQ #1,D0
MOVE.B D0,-1(A4)
LSR #8,D0
MOVE.B D0,(A4)
SUBQ.L #2,A4
RTS
EXIT:
CLR.L -(SP)
CLR -(SP)
CLR -(SP)
CLR -(SP)
MOVE #xbtimer,-(SP)
TRAP #xbios
ADD.L #12,SP
PEA CON(PC)
MOVE #supexec,-(SP)
TRAP #xbios
ADDQ.L #6,SP
PEA MON(PC) *mAUS EINSCHALTEN
MOVE #1,-(SP)
MOVE #ikbdws,-(SP)
TRAP #xbios
ADDQ.L #8,SP
MOVE REZ(PC),-(SP)
PEA -1
PEA -1
MOVE #sscreen,-(SP)
TRAP #xbios
ADD.L #12,SP
PEA OLDCOL
MOVE #setpalet,-(SP)
TRAP #xbios
ADDQ.L #6,SP
ERROR: CLR -(SP)
TRAP #gemdos
KADR:
DS.L 6
DC.L SECLSTN,SECTALK
DS.L 2
DC.L SCAN
DS.L 1
DC.L IECIN,IECOUT
DC.L UNTALK,UNLSTN
DC.L LSTN,TALK
DS.L 3
DC.L OPEN,CLOSE
DC.L CHKIN,CKOUT
DS.L 1
DC.L BASIN,BSOUT
DC.L FLOAD,FSAVE
DS.L 3
DC.L GET
DS.L 1
DC.L UDTIM
DS.L 3
DC.L INIT
KEY:
DC.B $40,$39,$38,$3B,$08,$0B,$10,$13,$18,$1B,$20,$23,$28,$2B,$00,$3F
DC.B $3E,$09,$0E,$11,$16,$0C,$1E,$21,$26,$29,$2E,$31,$01,$40,$0A,$0D
DC.B $12,$15,$1A,$1D,$22,$25,$2A,$2D,$32,$36,$40,$40,$19,$17,$14,$1F
DC.B $1C,$27,$24,$2F,$2C,$37,$40,$40,$40,$3C,$40,$04,$05,$06,$03,$40
DC.B $40,$40,$40,$40,$40,$40,$40,$33,$40,$40,$2B,$40,$40,$02,$28,$40
DC.B $07,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40
DC.B $40,$40,$40,$40,$40,$37,$31,$18,$1B,$20,$0B,$10,$13,$38,$3B,$08
DC.B $23,$2C,$01,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40
BASIC: DC.B "C64\_BASIC.C64",0
KERNAL: DC.B "C64\_KERNAL.C64",0
FONT: DC.B "C64\_FONT.C64",0
FILEADR:DC.L BASIC,KERNAL,FONT
LOADADR:DC.L C64+$A000,C64+$E000,PRFONT
OPAGE: DS.L 1
MOFF: DC.B $12
MON: DC.B $80,$01
SCBASE: DS.L 1
PLANE: DS.B 4
CLICK: DC.B 0,$3B,1,0,2,0,3,0,4,0,5,0,6,0,7,$FE,8,16,13,3,11,$80,12,1,$FF,0
STCODE: DC.B 0
C0286: DS.B 1
TAB: DC.L C64+$EB81 *dEFAULT-tASTATURTABELLE
REZ: DS 1
MSG: DC.B $1B,"e",$1B,"Fc64-eMULATOR v3.00",$0D,$0A,$0A
DC.B " {CBM-X} 1987 BY",$0D,$0A
DC.B " uWE sEIMET",$0D,$0A
DC.B " bUCHENLOCHSTRAE 29",$0D,$0A
DC.B " 6750 kAISERSLAUTERN",$0D,$0A
DC.B " tELEFON: 0631/21237",$0D,$0A,$0A,$0A
DC.B " bELEGUNG DER sONDERTASTEN:",$0D,$0A,$0A
DC.B "hELP: sYSTEM-iNFORMATIONEN",$0D,$0A
DC.B "ctrl: sCROLLING VERLANGSAMEN",$0D,$0A
DC.B " alt: sCROLLING ANHALTEN",$0D,$0A
DC.B " tAB: run/stop",$0D,$0A
DC.B "uNDO: rESTORE",$0D,$0A
DC.B " f5: bILDSCHIRMFARBE NDERN",$0D,$0A
DC.B " f6: zEICHENFARBE NDERN",$0D,$0A
DC.B " f7: hARDCOPY",$0D,$0A
DC.B " f8: bITMAP BERWACHEN: "
FF8: DC.B "+",$0D,$0A
DC.B " f9: bILDSCHIRMSPEICHER BERWACHEN: "
FF9: DC.B "+",$0D,$0A
DC.B " f10: eMULATOR VERLASSEN",0
BSS
OLDCOL: DS 16
SCTAB: DS 25
GRTAB: DS 256
KEYSAV: DS.L 1
EVNTSAV:DS.L 1
CRITSAV:DS.L 1
SET: DS.B 8192
GRBSS: DS.B 4096*3
REZFLG: DS.B 1
MFLG: DS.B 1
DS.L 100
STACK: DS 1