Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *=$1C01
- BYTE $0B, $1C, $0A, $00, $9E, $37, $31, $38, $31, $00, $00, $00
- jmp 8502code
- *=$1c10
- z80code
- BYTE $3E,$3F,$32,$00,$FF,$21,$6D,$1C,$11,$4B,$2C,$01
- BYTE $03,$00,$ED,$B0,$01,$0B,$DC,$ED,$78,$0B,$ED,$60
- BYTE $0B,$ED,$68,$0B,$ED,$48,$4F,$11,$20,$2C,$CD,$48
- BYTE $1C,$1F,$3E,$3A,$38,$02,$3E,$20,$11,$22,$2C,$12
- BYTE $11,$25,$2C,$12,$C3,$E0,$FF,$00,$79,$CD,$62,$1C
- BYTE $79,$CD,$66,$1C,$13,$7C,$CD,$62,$1C,$7C,$CD,$66
- BYTE $1C,$13,$7D,$CD,$62,$1C,$7D,$C3,$66,$1C,$1F,$1F
- BYTE $1F,$1F,$E6,$0F,$F6,$30,$12,$13,$C9,$1A,$38,$30
- ; Lo z80 avvia la macchina; dopodiché attiva l'8502, e resta bloccato
- ; al punto in cui aveva eseguito l'attivazione dell'altro ($ffee).
- ; All'indirizzo $ffee va inserita un'istruzione JP di salto verso il
- ; codice z80 da eseguire
- 8502code
- sei
- lda $ff00
- pha
- lda #$c3 ; z80 "JP"
- sta $ffee
- lda #<z80code
- sta $ffef
- lda #>z80code
- sta $fff0
- lda #$3e ; ram+ram+ram+io
- sta $ff00
- jsr ClearScreen
- lda #$0
- sta $dc08 ; start TOD
- lda $d018 ; MemScr -> $2c00
- pha
- and #$0f
- ora #$b0
- sta $d018
- ldx #$3 ; "8502" -> Video
- lpcpu
- lda cpu,x
- sta $2c2a,x
- dex
- bpl lpcpu
- lpZ80
- ; lda #$3e ; ram+ram+ram+io
- ; sta $ff00
- lda #$b0
- sta $d505 ; -> z80
- nop
- ; qui è stato attivato lo z80; quando viene riattivato l'8502 il codice
- ; riparte da dove era rimasto bloccato
- ; z80 -> 8502
- ldx #0 ; TOD 8502
- lda $dc0b ; HH
- jsr wb
- lda $dc0a ; MM
- jsr wb
- lda $dc09 ; SS
- jsr wb
- lsr
- lda $dc08 ; restart TOD
- ldx #$3a ; ":"
- bcc commas
- ldx #$20 ; " "
- commas
- stx $2c02 ; " "|":" -> Video
- stx $2c05 ; " "|":" -> Video
- WaitForSpace
- lda #%11111111
- sta $dc02
- lda #%00000000
- sta $dc03
- lda #$7f ;%01111111 - only row 7 KB matrix
- sta $dc00
- lda $dc01
- and #$10 ;mask %00010000
- bne lpZ80 ;
- ; ending
- pla
- sta $d018 ; MemScr -> $0400
- pla
- sta $ff00 ; MemConf -> iniz
- cli
- rts
- cpu
- byte '8502'
- ;--------------------
- wb tay
- lsr
- lsr
- lsr
- lsr
- ora #$30
- sta $2c00,x
- tya
- and #$0f
- ora #$30
- inx
- sta $2c00,x
- inx
- inx
- rts
- ;--------------------
- ; (z80, $2c00)
- ClearScreen
- ldx #250
- lda #$20
- lpclr sta $2c00- 1,x
- sta $2c00+249,x
- sta $2c00+499,x
- sta $2c00+749,x
- dex
- bne lpclr
- rts
- ; Note: Z80 uses IN and OUT to write to d000h-dfffh
- ; that's because that area is IO or Ram depending on the direction port ($0001) of the 8502,
- ; and when z80 is active that port is disabled;
- ; so IN and OUT read/write the mapped IO, while LD reads/writes Ram
- ;.org 01c10h
- ; LD A, 3Fh ; ram+ram+ram+ram
- ; LD (0FF00h),A
- ;
- ; ld hl,cpu ; "Z80" -> Video
- ; ld de,02c4bh
- ; ld bc,3h
- ; ldir
- ; ld bc,0dc0bh ; TOD z80
- ; in a,(C) ; HH
- ; dec bc
- ; in h,(C) ; MM
- ; dec bc
- ; in l,(C) ; SS
- ; dec bc
- ; in c,(C) ; restart TOD
- ; ld c,a
- ;
- ; ld de,02c20h
- ;
- ; call Bcd2HexAscii
- ; rra
- ; ld a,3ah ; ":"
- ; jr c,commas
- ; ld a,20h ; " "
- ;commas
- ; ld de,02c22h ; " "|":" -> Video
- ; ld (de),a
- ; ld de,02c25h ; " "|":" -> Video
- ; ld (de),a
- ; JP 0FFE0h ; --> 8502
- ; NOP
- ;ffe0 F3 DI
- ;ffe1 3E 3E LD A, #$3E
- ;ffe3 32 00 FF LD ($FF00),A
- ;ffe6 01 05 D5 LD BC, #$D505
- ;ffe9 3E B1 LD A, #$B1
- ;ffeb ED 79 OUT BC,A
- ;ffed 00 NOP
- ;ffee C3 3E 1C JP $1C3E
- ;;;----------------------------------------------------
- ;;; Converts a 6-digit BCD number to a hex ASCII string
- ;;;
- ;;; input: DE = pointer to start of ASCII string
- ;;; C:HL number to be converted
- ;;; output: DE = pointer past end of ASCII string
- ;;; destroys: A,F,D,E
- ;;;-----------------------------------------------------
- ;Bcd2HexAscii
- ; ;push de
- ; LD A, C
- ; CALL cvtUpperNibble
- ; LD A, C
- ; CALL cvtLowerNibble
- ; inc de
- ; LD A, H
- ; CALL cvtUpperNibble
- ; LD A, H
- ; CALL cvtLowerNibble
- ; inc de
- ; LD A, L
- ; CALL cvtUpperNibble
- ; LD A, L
- ; JP cvtLowerNibble
- ;
- ;cvtUpperNibble
- ; RRA ; move upper nibble into lower nibble
- ; RRA
- ; RRA
- ; RRA
- ;cvtLowerNibble
- ; AND 0Fh ; isolate lower nibble
- ; OR 30h
- ; LD (DE), A
- ; INC DE
- ; RET
- ;
- ;cpu
- ; .db 01ah, "80" ; "Z80"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement