v2.1 from Merlin source code

This commit is contained in:
Antoine Vignau 2020-07-31 08:20:16 +02:00 committed by GitHub
parent e7ecc6d4eb
commit 673d3aee45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 4225 additions and 0 deletions

3523
source/ampermanager.s Normal file

File diff suppressed because it is too large Load Diff

65
source/amperstart.s Normal file
View File

@ -0,0 +1,65 @@
*
* Amper Manager - Amperstart
*
* (c) 1987, Rick Sutcliffe
* (s) 2020, Antoine Vignau
*
xc
xc
mx %11
org $300
lst off
*-------------------------------
YSAV EQU $34
XSAV EQU $46
FORPNT EQU $85
IN EQU $200
DOSCMD EQU $BE03
*-------------------------------
LDA #17
STA YSAV ;AND PUT IT WHERE MOVER CAN GET IT
LDA #<AMPSTR ;LOW BYTE
LDY #>AMPSTR ;HIGH BYTE
JSR MOVAYBUF0
JSR DOSCMD ;AND MAKE ProDOS DO IT
JSR $80C
LDA #13
STA YSAV
LDA #<PROGSTR
LDY #>PROGSTR
JSR MOVAYBUF0
JMP DOSCMD
*
* MOVE COMMAND POINTED TO BY (A,Y) TO BUFFER AT $200
* LEN IN YSAV
MOVAYBUF0 LDX #$00
MOVAYBUF STY FORPNT+1 ;SET UP ON ZERO PAGE
STA FORPNT
TXA
CLC
ADC YSAV
TAX
STX XSAV
DEX
LDY YSAV ;COUNTER FOR LEN
MOVFOR1 DEY
BMI MOVCRBUF ;WHEN FINISHED
LDA (FORPNT),Y
ORA #$80 ;HI BIT SET
STA IN,X
DEX
BPL MOVFOR1 ;ALWAYS
MOVCRBUF LDA #$8D
LDX XSAV
STA IN,X
FIXEDRTS RTS
AMPSTR ASC 'BLOADAMPERMANAGER'
PROGSTR ASC '-RECEPTIONIST'

536
source/formatter.s Normal file
View File

@ -0,0 +1,536 @@
s* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * *
* * M U S T B E O N P A G E B O U N D A R Y * *
* * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* ORG $7800
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* ProDOS DISK ][ Formatter Device Driver *
* *
* Copyright Apple Computer, Inc., 1982, 1983 *
* *
* Enter with ProDOS device number in A-register: *
* Zero = bits 1, 2, 3, 4 *
* Slot No.= bits 4, 5, 6 *
* Drive 1 = bit 7 off *
* Drive 2 = bit 7 on *
* *
* Error codes returned in A-register: *
* $00 : Good completion *
* $27 : Unable to format *
* $2B : Write-Protected *
* $33 : Drive too SLOW *
* $34 : Drive too FAST *
* NOTE: Carry flag is set if error occured. *
* *
* Uses zero page locations $D0 thru $DD *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
JSR *+$3A
CMP #$00
BNE *+$04
CLC
RTS
CMP #$02
BNE *+$07
LDA #$2B
JMP *+$12
CMP #$01
BNE *+$07
LDA #$27
JMP *+$09
CLC
ADC #$30
JMP *+$03
SEC
RTS
ASL A
ASL *+$400
STA *+$40F
TXA
LSR A
LSR A
LSR A
LSR A
TAY
LDA *+$406
JSR *+$193
LSR *+$3EE
RTS
TAX
AND #$70
STA *+$3E6
TXA
LDX *+$3E2
ROL A
LDA #$00
ROL A
BNE *+$08
LDA $C08A,X
JMP *+$06
LDA $C08B,X
LDA $C089,X
LDA #$D7
STA $DA
LDA #$50
STA *+$3C8
LDA #$00
JSR *-$3E
LDA $DA
BEQ *+$08
JSR *+$2D2
JMP *-$07
LDA #$01
STA $D3
LDA #$AA
STA $D0
LDA *+$3AA
CLC
ADC #$02
STA $D4
LDA #$00
STA $D1
LDA $D1
LDX *+$39F
JSR *-$64
LDX *+$399
LDA $C08D,X
LDA $C08E,X
TAY
LDA $C08E,X
LDA $C08C,X
TYA
BPL *+$07
LDA #$02
JMP *+$5A
JSR *+$2C1
BCC *+$10
LDA #$01
LDY $D4
CPY *+$374
BCS *+$04
LDA #$04
JMP *+$47
LDY $D4
CPY *+$368
BCS *+$07
LDA #$04
JMP *+$3B
CPY *+$35F
BCC *+$07
LDA #$03
JMP *+$31
LDA *+$357
STA *+$357
DEC *+$354
BNE *+$07
LDA #$01
JMP *+$21
LDX *+$348
JSR *+$8C
BCS *-$10
LDA $D8
BNE *-$14
LDX *+$33C
JSR *+$1D
BCS *-$1C
INC $D1
LDA $D1
CMP #$23
BCC *-$73
LDA #$00
PHA
LDX *+$329
LDA $C088,X
LDA #$00
JSR *-$DF
PLA
RTS
LDY #$20
DEY
BEQ *+$5E
LDA $C08C,X
BPL *-$03
EOR #$D5
BNE *-$0A
NOP
LDA $C08C,X
BPL *-$03
CMP #$AA
BNE *-$0C
LDY #$56
LDA $C08C,X
BPL *-$03
CMP #$AD
BNE *-$17
LDA #$00
DEY
STY $D5
LDA $C08C,X
BPL *-$03
CMP #$96
BNE *+$32
LDY $D5
BNE *-$0E
STY $D5
LDA $C08C,X
BPL *-$03
CMP #$96
BNE *+$23
LDY $D5
INY
BNE *-$0E
LDA $C08C,X
BPL *-$03
CMP #$96
BNE *+$15
LDA $C08C,X
BPL *-$03
CMP #$DE
BNE *+$0C
NOP
LDA $C08C,X
BPL *-$03
CMP #$AA
BEQ *+$5E
SEC
RTS
LDY #$FC
STY $DC
INY
BNE *+$06
INC $DC
BEQ *-$0B
LDA $C08C,X
BPL *-$03
CMP #$D5
BNE *-$0E
NOP
LDA $C08C,X
BPL *-$03
CMP #$AA
BNE *-$0C
LDY #$03
LDA $C08C,X
BPL *-$03
CMP #$96
BNE *-$17
LDA #$00
STA $DB
LDA $C08C,X
BPL *-$03
ROL A
STA $DD
LDA $C08C,X
BPL *-$03
AND $DD
STA $D7,Y
EOR $DB
DEY
BPL *-$17
TAY
BNE *-$47
LDA $C08C,X
BPL *-$03
CMP #$DE
BNE *-$50
NOP
LDA $C08C,X
BPL *-$03
CMP #$AA
BNE *-$5A
CLC
RTS
STX *+$271
STA *+$26D
CMP *+$258
BEQ *+$5E
LDA #$00
STA *+$265
LDA *+$24E
STA *+$260
SEC
SBC *+$259
BEQ *+$39
BCS *+$09
EOR #$FF
INC *+$23E
BCC *+$07
ADC #$FE
DEC *+$237
CMP *+$248
BCC *+$05
LDA *+$243
CMP #$0C
BCS *+$03
TAY
SEC
JSR *+$1F
LDA *+$14A,Y
JSR *+$136
LDA *+$232
CLC
JSR *+$15
LDA *+$149,Y
JSR *+$129
INC *+$224
BNE *-$41
JSR *+$121
CLC
LDA *+$207
AND #$03
ROL A
ORA *+$214
TAX
LDA $C080,X
LDX *+$20D
RTS
JSR *+$1E0
LDA $C08D,X
LDA $C08E,X
LDA #$FF
STA $C08F,X
CMP $C08C,X
PHA
PLA
NOP
LDY #$04
PHA
PLA
JSR *+$5F
DEY
BNE *-$06
LDA #$D5
JSR *+$56
LDA #$AA
JSR *+$51
LDA #$AD
JSR *+$4C
LDY #$56
NOP
NOP
NOP
BNE *+$05
JSR *+$1AC
NOP
NOP
LDA #$96
STA $C08D,X
CMP $C08C,X
DEY
BNE *-$0E
BIT $00
NOP
JSR *+$199
LDA #$96
STA $C08D,X
CMP $C08C,X
LDA #$96
NOP
INY
BNE *-$0F
JSR *+$1E
LDA #$DE
JSR *+$19
LDA #$AA
JSR *+$14
LDA #$EB
JSR *+$0F
LDA #$FF
JSR *+$0A
LDA $C08E,X
LDA $C08C,X
RTS
NOP
PHA
PLA
STA $C08D,X
CMP $C08C,X
RTS
SEC
LDA $C08D,X
LDA $C08E,X
BMI *+$60
LDA #$FF
STA $C08F,X
CMP $C08C,X
PHA
PLA
JSR *+$5A
JSR *+$57
STA $C08D,X
CMP $C08C,X
NOP
DEY
BNE *-$0E
LDA #$D5
JSR *+$5A
LDA #$AA
JSR *+$55
LDA #$96
JSR *+$50
LDA $D3
JSR *+$3A
LDA $D1
JSR *+$35
LDA $D2
JSR *+$30
LDA $D3
EOR $D1
EOR $D2
PHA
LSR A
ORA $D0
STA $C08D,X
LDA $C08C,X
PLA
ORA #$AA
JSR *+$2A
LDA #$DE
JSR *+$26
LDA #$AA
JSR *+$21
LDA #$EB
JSR *+$1C
CLC
LDA $C08E,X
LDA $C08C,X
RTS
PHA
LSR A
ORA $D0
STA $C08D,X
CMP $C08C,X
PLA
NOP
NOP
NOP
ORA #$AA
NOP
NOP
PHA
PLA
STA $C08D,X
CMP $C08C,X
RTS
BRK
BRK
BRK
LDX #$11
DEX
BNE *-$01
INC $D9
BNE *+$04
INC $DA
SEC
SBC #$01
BNE *-$0E
RTS
DFB $01,$30,$28
DFB $24,$20,$1E
DFB $1D,$1C,$1C
DFB $1C,$1C,$1C
DFB $70,$2C,$26
DFB $22,$1F,$1E
DFB $1D,$1C,$1C
DFB $1C,$1C,$1C
LDA *+$BE
STA $D6
LDY #$80
LDA #$00
STA $D2
JMP *+$05
LDY $D4
LDX *+$B0
JSR *-$C8
BCC *+$05
JMP *+$93
LDX *+$A5
JSR *-$153
INC $D2
LDA $D2
CMP #$10
BCC *-$19
LDY #$0F
STY $D2
LDA *+$92
STA *+$92
STA *+$90,Y
DEY
BPL *-$04
LDA $D4
SEC
SBC #$05
TAY
JSR *+$6C
JSR *+$69
PHA
PLA
NOP
NOP
DEY
BNE *-$0B
LDX *+$74
JSR *-$248
BCS *+$3E
LDA $D8
BEQ *+$15
DEC $D4
LDA $D4
CMP *+$60
BCS *+$31
SEC
RTS
LDX *+$5D
JSR *-$25F
BCS *+$1C
LDX *+$55
JSR *-$2CA
BCS *+$14
LDY $D8
LDA *+$4E,Y
BMI *+$0D
LDA #$FF
STA *+$47,Y
DEC $D2
BPL *-$1E
CLC
RTS
DEC *+$3D
BNE *-$25
DEC $D6
BNE *+$04
SEC
RTS
LDA *+$2F
ASL A
STA *+$2E
LDX *+$29
JSR *-$293
BCS *+$08
LDA $D8
CMP #$0F
BEQ *+$09
DEC *+$1D
BNE *-$11
SEC
RTS
LDX #$D6
JSR *-$03
JSR *-$06
BIT $00
DEX
BNE *-$09
JMP *-$B4
DFB $13,$19,$03
DFB $10,$00,$00
DFB $00,$00,$00
DFB $00,$00,$00
DFB $00,$00,$00
DFB $00,$00,$00
DFB $00,$00,$00
DFB $00,$00,$00
DFB $00,$00,$00

101
source/t.ultra.s Normal file
View File

@ -0,0 +1,101 @@
*
* Amper Manager - Ultraterm 2 driver
*
* (c) 1987, Paul Smith & Rick Sutcliffe
* (s) 2020, Antoine Vignau
*
xc
xc
mx %11
lst off
*-------------------------------
* *
* SPREADSHEET 2 *
* ULTRATERM DRIVER *
* *
* BY PAUL SMITH *
* *
* AND *
* RICK SUTCLIFFE *
* *
HOMEC EQU $8C
CNTRLV EQU $96
ULFORMAT DFB $B1
*
*
*ULTRATERM FORMATS
USTR ASC 'HERE ARE YOUR ULTRATERM FORMATS:'
DFB $0D,$0D
ASC '0) 40 X 24'
DFB $0D
ASC '1) 80 X 24'
DFB $0D
ASC '2) 96 X 24'
DFB $0D
ASC '3) 160 X 24'
DFB $0D
ASC '4) 80 X 24 I'
DFB $0D
ASC '5) 80 X 32 I'
DFB $0D
ASC '6) 80 X 48 I'
DFB $0D
ASC '7) 132 X 24 I'
DFB $0D
ASC '8) 128 X 32 I'
DFB $0D,$0D
DCI 'PICK FORMAT (1-8) DEFAULT = '
*
*ACTUAL DRIVER
*
ULTRAO BIT $C061 ;CHECK BUTTONS
BMI ULTRA
BIT $C062
BPL ULTRAFIN ;NO BUTTON SO FORGET IT
ULTRA JSR ISULTRA
BCC ULTRA2 ;GOT ONE
ULTRAFIN RTS ;NO ULTRATERM
ULTRA2 LDA $BF98 ;80 COL
ORA #$02
STA $BF98
ULTRA3 LDA #HOMEC
JSR $C300 ;START UP ULTRATERM
JSR PUTWWDTH
LDA #<USTR ;READY TO PRINT MESSAGE
LDX #>USTR
JSR PRINTERC
JSR FMTOUT
GETFMT LDA KBD
BPL GETFMT
BIT KBDSTRB
CMP #$8D ;IS RETURN
BEQ TODEFAULT
CMP #$B0 ;LESS THAN 1
BCC GETFMT ;TRY AGAIN
CMP #$B9 ;OR>8
BGE GETFMT
STA ULFORMAT ;SAVE IT
EOR #$B0 ;CHANGE TO INDEX
BNE GETFMT1 ;IF NOT 0 GO ON
LDA #$18
STA WNDBTM
LDA #$28
STA WNDWDTH
BNE TODEFAULT
GETFMT1 TAX
LDA PWDTBL-1,X ;GET WIDTH
SEC
SBC #$01
STA WNDWDTH
LDA HGTBL-1,X
STA WNDBTM
TODEFAULT JSR DEFAULT
JSR HOME
JMP CSSWON
DEFAULT LDA #CNTRLV
JSR COUT
FMTOUT LDA ULFORMAT
JMP COUT