Updated POST tests & copyright

This commit is contained in:
Sergei Panarin 2021-01-26 21:50:16 +03:00
parent e5d8a97ecf
commit 45d32ed9c8
9 changed files with 284 additions and 291 deletions

View File

@ -63,7 +63,7 @@ NEXT_ROW: PHA
PLA
RTS
;from HeartPicture
;to PIC_ADDRESS ($88)
;to PIC_ADDRESS
COPY_HEART: PHA
TXA
PHA

View File

@ -2,17 +2,17 @@
;KBDCR = $D011
;DSP = $D012
;DSPCR = $D013
START_TEST = $EA
;START_TEST = $EA
END_TEST = $EB
LED_BLINKS = 5
TEST1_REPEATS = 4
TEST1_REPEATS = 8
TEST2_REPEATS = 16
TEST61_REPEATS = 8
TEST62_REPEATS = 8
TEST7_REPEATS = 16
POSTOK_REPEATS = 4
POSTOK_REPEATS = 8
/*
LED_BLINKS = 1
@ -25,10 +25,9 @@ POSTOK_REPEATS = 1
*/
POST_START: NOP
LDA #START_TEST
STA DSP
POST_START:
;LDA #START_TEST
;STA DSP
LDA #%00000001
JSR BLINK
;Test 1. Memory addresses decoder (blinking in cycle)
@ -71,9 +70,9 @@ VIDEO_PORT: STA DSP
JSR BLINK
;Test 5. Testing RAM with write&read (writing TEST_SYMBOL and testing read for every 4Kb block in 32Kb RAM)
;Total blocks tested is 8 (4*8 = 32)
TEST_SYMBOL = $3E
TEST_SYMBOL = $00
/*
RAMTEST: CLD
LDX #$00
LDY #$00
@ -87,7 +86,7 @@ RAMLOOP: LDA #TEST_SYMBOL
STA ($00),Y
LDA ($00),Y
CMP #TEST_SYMBOL
BNE ENDTEST
BNE TEST_6
TXA
ASL A
ADC #$01
@ -98,15 +97,15 @@ RAMLOOP: LDA #TEST_SYMBOL
STA $01
JMP RAMLOOP
*/
TEST_6: NOP
LDA #%00100000
JSR BLINK
;Test 6. Testing BIT7 ports - keyboard and video
;Test 6-7. Testing BIT7 ports - keyboard and video
BIT7MASK = %10000000
KBD7MASK = %00000111
DSP7MASK = %00111111
;Test 6.1. Testing keyboard BIT7 port read (turn on 3 LEDs on the left and show BIT7 in the last LED)
;Test 6. Testing keyboard BIT7 port read (turn on 3 LEDs on the left and show BIT7 in the last LED)
KBDBIT7: LDX #TEST61_REPEATS
LDA #KBD7MASK
@ -118,8 +117,10 @@ KBD7LOOP:
STA DSP
DEX
BNE KBD7LOOP
;Test 6.2. Testing video BIT7 port read (turn on 6 LEDs on the left and show BIT7 in the last LED)
LDA #%01000000
JSR BLINK
;Test 7. Testing video BIT7 port read (turn on 6 LEDs on the left and show BIT7 in the last LED)
DSPBIT7: LDX #TEST62_REPEATS
LDA #DSP7MASK
STA DSP
@ -131,10 +132,9 @@ DSP7LOOP:
DEX
BNE DSP7LOOP
LDA #%01000000
LDA #%10000000
JSR BLINK
;Test 7. Testing keyboard port read and write to Video port
;Test 8. Testing keyboard port read and write to Video port
KBDTODSP: LDX #TEST7_REPEATS
LDA #$00
STA DSP
@ -145,7 +145,6 @@ KBDDSPLOOP:
BNE KBDDSPLOOP
;POST success and end
ENDPOST: LDX #POSTOK_REPEATS
ENDLOOP:
LDA #%01010101
@ -159,26 +158,24 @@ ENDLOOP:
DEX
BNE ENDLOOP
NOP
NOP
;printing ASCII table
JSR ASCII_ECHO
JSR PRINT_ASCII
ENDTEST: NOP
NOP
LDA #END_TEST
ENDTEST: LDA #END_TEST
JSR ECHO ;writing END_TEST to let video driver know that tests are over
LDX #$00
PRINT_MSG:
LDA POSTCompletedText, X
BEQ TO_WOZ_MON ;end printing at the end of the string (\n=0)
BEQ QUIT_POST ;end printing at the end of the string (\n=0)
JSR ECHO
INX
JMP PRINT_MSG
TO_WOZ_MON: JMP RESET ;start Woz Monitor (operating system)
QUIT_POST:
JSR COPY_HEART ;writing Heart code picture to RAM
JMP RESET ;start Woz Monitor (operating system)
;------------------------------------------------------
; POST subroutines
@ -208,8 +205,8 @@ NEXT_BLINK: TYA ;restore A
;printing visible symbols of ACSII table via ECHO function from Woz Monitor
PRINT_ASCII:
LDY #32
LDX #95 ;80 in hex = 127 in decimal
LDY #$00 ;starting symbol
LDX #$80 ;80 in hex = 127 in decimal
ASCII_ECHO:
BIT DSP
BMI ASCII_ECHO

View File

@ -1,13 +1,13 @@
Modules list:
-------------
SmartyKit1_ROM.o:
CODE Offs=000000 Size=000005 Align=00001 Fill=0000
PICTURE Offs=000000 Size=00001A Align=00001 Fill=0000
CODE Offs=000000 Size=000001 Align=00001 Fill=0000
PICTURE Offs=000000 Size=000008 Align=00001 Fill=0000
C000 Offs=000000 Size=000001 Align=00001 Fill=0000
E000 Offs=000000 Size=000007 Align=00001 Fill=0000
E000 Offs=000000 Size=000001 Align=00001 Fill=0000
F000 Offs=000000 Size=00024A Align=00001 Fill=0000
F800 Offs=000000 Size=00000B Align=00001 Fill=0000
FA00 Offs=000000 Size=000122 Align=00001 Fill=0000
FA00 Offs=000000 Size=000149 Align=00001 Fill=0000
FC00 Offs=000000 Size=0000B2 Align=00001 Fill=0000
FD00 Offs=000000 Size=000037 Align=00001 Fill=0000
FF00 Offs=000000 Size=0000FA Align=00001 Fill=0000
@ -18,13 +18,13 @@ Segment list:
-------------
Name Start End Size Align
----------------------------------------------------
PICTURE 000088 0000A1 00001A 00001
CODE 008000 008004 000005 00001
PICTURE 000088 00008F 000008 00001
CODE 008000 008000 000001 00001
C000 00C000 00C000 000001 00001
E000 00E000 00E006 000007 00001
E000 00E000 00E000 000001 00001
F000 00F000 00F249 00024A 00001
F800 00F800 00F80A 00000B 00001
FA00 00FA00 00FB21 000122 00001
FA00 00FA00 00FB48 000149 00001
FC00 00FC00 00FCB1 0000B2 00001
FD00 00FD00 00FD36 000037 00001
FF00 00FF00 00FFF9 0000FA 00001

View File

@ -2,36 +2,36 @@ ca65 V2.19 - Git 0f4cb443
Main file : SmartyKit1_ROM.asm
Current file: SmartyKit1_ROM.asm
000000r 1 .setcpu "6502"
000000r 1 .feature c_comments
000000r 1 /* SmartyKit 1 - ROM source
000000r 1 * http://www.smartykit.io/
000000r 1 * Copyright (C) 2020, Sergey Panarin <sergey@smartykit.io>
000000r 1 *
000000r 1 This program is free software: you can redistribute it and/or modify
000000r 1 it under the terms of the GNU General Public License as published by
000000r 1 the Free Software Foundation, either version 3 of the License, or
000000r 1 (at your option) any later version.
000000r 1 This program is distributed in the hope that it will be useful,
000000r 1 but WITHOUT ANY WARRANTY; without even the implied warranty of
000000r 1 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
000000r 1 GNU General Public License for more details.
000000r 1 You should have received a copy of the GNU General Public License
000000r 1 along with this program. If not, see <https://www.gnu.org/licenses/>.
000000r 1 */
000000r 1
000000r 1 .setcpu "6502"
000000r 1 .segment "PICTURE"
000000r 1 00 .byte %00000000
000001r 1 66 .byte %01100110
000002r 1 FF .byte %11111111
000003r 1 FF .byte %11111111
000004r 1 FF .byte %11111111
000005r 1 7E .byte %01111110
000006r 1 3C .byte %00111100
000007r 1 18 .byte %00011000
000008r 1 00 .byte 00
000009r 1 00 .byte 00
00000Ar 1 3C 42 A5 81 Smiley: .byte $3c, $42, $a5, $81, $a5, $99, $42, $3c
00000Er 1 A5 99 42 3C
000012r 1 88 A8 50 07 Woz: .byte $88, $a8, $50, $07, $61, $92, $94, $67
000016r 1 61 92 94 67
00001Ar 1 ; .byte "8*8 Pixel Art picture end", $0d, $00
00001Ar 1
00001Ar 1 .code
000000r 1 A9 12 loop: lda #$12
000002r 1 4C rr rr jmp loop
000005r 1
000005r 1 .segment "C000"
000000r 1 88 A8 50 07 Woz: .byte $88, $a8, $50, $07, $61, $92, $94, $67
000004r 1 61 92 94 67
000008r 1 ; .byte "8*8 Pixel Art picture end", $0d, $00
000008r 1
000008r 1 .code
000000r 1 EA nop
000001r 1 .segment "C000"
000000r 1 EA nop
000001r 1 .segment "E000"
000000r 1 20 rr rr JSR COPY_HEART
000003r 1 4C 00 FC JMP $FC00
000006r 1 EA nop
000007r 1 .segment "F000"
000000r 1 EA nop
000001r 1 .segment "F000"
000000r 1 ;Woz face
000000r 1 .include "Apple30th_Woz.asm"
000000r 2 ;SYMBOLS_TABLE = $031D
@ -563,7 +563,6 @@ Current file: SmartyKit1_ROM.asm
00023Cr 2 20 70 72 6F
00024Ar 2
00024Ar 1
00024Ar 1
00024Ar 1 .segment "F800"
000000r 1 ;Test from Apple-1 Operation Manual printing all ASCII symbols in a loop
000000r 1 .include "TestFromManual.asm"
@ -583,17 +582,17 @@ Current file: SmartyKit1_ROM.asm
000000r 2 ;KBDCR = $D011
000000r 2 ;DSP = $D012
000000r 2 ;DSPCR = $D013
000000r 2 START_TEST = $EA
000000r 2 ;START_TEST = $EA
000000r 2 END_TEST = $EB
000000r 2
000000r 2
000000r 2 LED_BLINKS = 5
000000r 2 TEST1_REPEATS = 4
000000r 2 TEST1_REPEATS = 8
000000r 2 TEST2_REPEATS = 16
000000r 2 TEST61_REPEATS = 8
000000r 2 TEST62_REPEATS = 8
000000r 2 TEST7_REPEATS = 16
000000r 2 POSTOK_REPEATS = 4
000000r 2 POSTOK_REPEATS = 8
000000r 2
000000r 2 /*
000000r 2 LED_BLINKS = 1
@ -606,212 +605,209 @@ Current file: SmartyKit1_ROM.asm
000000r 2 */
000000r 2
000000r 2
000000r 2 EA POST_START: NOP
000001r 2 A9 EA LDA #START_TEST
000003r 2 8D 12 D0 STA DSP
000006r 2
000006r 2 A9 01 LDA #%00000001
000008r 2 20 rr rr JSR BLINK
00000Br 2 ;Test 1. Memory addresses decoder (blinking in cycle)
00000Br 2 A2 04 MEM_DECODER: LDX #TEST1_REPEATS
00000Dr 2 AD 00 FF LOOPADDR: LDA $FF00
000010r 2 AD 00 E0 LDA $E000
000013r 2 AD 00 D0 LDA $D000
000016r 2 AD 00 C0 LDA $C000
000019r 2 CA DEX
00001Ar 2 D0 F1 BNE LOOPADDR
00001Cr 2
00001Cr 2 A9 02 LDA #%00000010
00001Er 2 20 rr rr JSR BLINK
000021r 2 ;Test 2. Ports decoder (blinking in cycle)
000021r 2 A9 10 LDA #TEST2_REPEATS
000023r 2 AA PORTS_DECODER: TAX
000024r 2 AC 10 D0 LDY KBD
000027r 2 AC 11 D0 LDY KBDCR
00002Ar 2 8E 12 D0 STX DSP
00002Dr 2 2C 12 D0 BIT DSP
000030r 2 CA DEX
000031r 2 8A TXA
000032r 2 D0 EF BNE PORTS_DECODER
000034r 2
000034r 2 A9 04 LDA #%00000100
000036r 2 20 rr rr JSR BLINK
000039r 2 ;Test 3. Testing writing to Video port (1->2->4->8->16->32->64->128->256->0)
000039r 2 A9 01 LDA #%00000001
00003Br 2 8D 12 D0 VIDEO_PORT: STA DSP
00003Er 2 0A ASL A ;shifting 1 to the left
00003Fr 2 D0 FA BNE VIDEO_PORT
000041r 2
000041r 2 A9 08 LDA #%00001000
000043r 2 20 rr rr JSR BLINK
000046r 2 ;Test 4. Testing writing to Video port via function call (256->128->64->32->16->8->4->2->1->0)
000046r 2 20 rr rr JSR VIDEO_PORT2
000049r 2
000049r 2
000049r 2 A9 10 LDA #%00010000
00004Br 2 20 rr rr JSR BLINK
00004Er 2 ;Test 5. Testing RAM with write&read (writing TEST_SYMBOL and testing read for every 4Kb block in 32Kb RAM)
00004Er 2 ;Total blocks tested is 8 (4*8 = 32)
00004Er 2 TEST_SYMBOL = $3E
00004Er 2
00004Er 2 /*
00004Er 2 RAMTEST: CLD
00004Er 2 LDX #$00
00004Er 2 LDY #$00
00004Er 2
00004Er 2 LDA #$FF
00004Er 2 STA $00
00004Er 2 LDA #$0F
00004Er 2 STA $01
00004Er 2
00004Er 2 RAMLOOP: LDA #TEST_SYMBOL
00004Er 2 STA ($00),Y
00004Er 2 LDA ($00),Y
00004Er 2 CMP #TEST_SYMBOL
00004Er 2 BNE ENDTEST
00004Er 2 TXA
00004Er 2 ASL A
00004Er 2 ADC #$01
00004Er 2 STA DSP
00004Er 2 TAX
00004Er 2 LDA $01
00004Er 2 ADC #$10
00004Er 2 STA $01
00004Er 2 JMP RAMLOOP
00004Er 2
00004Er 2 */
00004Er 2
00004Er 2 A9 20 LDA #%00100000
000050r 2 20 rr rr JSR BLINK
000053r 2 ;Test 6. Testing BIT7 ports - keyboard and video
000053r 2 BIT7MASK = %10000000
000053r 2 KBD7MASK = %00000111
000053r 2 DSP7MASK = %00111111
000053r 2 ;Test 6.1. Testing keyboard BIT7 port read (turn on 3 LEDs on the left and show BIT7 in the last LED)
000053r 2
000053r 2 A2 08 KBDBIT7: LDX #TEST61_REPEATS
000055r 2 A9 07 LDA #KBD7MASK
000057r 2 8D 12 D0 STA DSP
00005Ar 2 KBD7LOOP:
00005Ar 2 AD 11 D0 LDA KBDCR
00005Dr 2 29 80 AND #BIT7MASK
00005Fr 2 09 07 ORA #KBD7MASK
000061r 2 8D 12 D0 STA DSP
000064r 2 CA DEX
000065r 2 D0 F3 BNE KBD7LOOP
000067r 2 ;Test 6.2. Testing video BIT7 port read (turn on 6 LEDs on the left and show BIT7 in the last LED)
000067r 2
000067r 2 A2 08 DSPBIT7: LDX #TEST62_REPEATS
000069r 2 A9 3F LDA #DSP7MASK
00006Br 2 8D 12 D0 STA DSP
00006Er 2 DSP7LOOP:
00006Er 2 AD 12 D0 LDA DSP
000071r 2 29 80 AND #BIT7MASK
000073r 2 09 3F ORA #DSP7MASK
000075r 2 8D 12 D0 STA DSP
000078r 2 CA DEX
000079r 2 D0 F3 BNE DSP7LOOP
00007Br 2
00007Br 2
00007Br 2 A9 40 LDA #%01000000
00007Dr 2 20 rr rr JSR BLINK
000080r 2 ;Test 7. Testing keyboard port read and write to Video port
000080r 2 A2 10 KBDTODSP: LDX #TEST7_REPEATS
000082r 2 A9 00 LDA #$00
000000r 2 POST_START:
000000r 2 ;LDA #START_TEST
000000r 2 ;STA DSP
000000r 2 A9 01 LDA #%00000001
000002r 2 20 rr rr JSR BLINK
000005r 2 ;Test 1. Memory addresses decoder (blinking in cycle)
000005r 2 A2 08 MEM_DECODER: LDX #TEST1_REPEATS
000007r 2 AD 00 FF LOOPADDR: LDA $FF00
00000Ar 2 AD 00 E0 LDA $E000
00000Dr 2 AD 00 D0 LDA $D000
000010r 2 AD 00 C0 LDA $C000
000013r 2 CA DEX
000014r 2 D0 F1 BNE LOOPADDR
000016r 2
000016r 2 A9 02 LDA #%00000010
000018r 2 20 rr rr JSR BLINK
00001Br 2 ;Test 2. Ports decoder (blinking in cycle)
00001Br 2 A9 10 LDA #TEST2_REPEATS
00001Dr 2 AA PORTS_DECODER: TAX
00001Er 2 AC 10 D0 LDY KBD
000021r 2 AC 11 D0 LDY KBDCR
000024r 2 8E 12 D0 STX DSP
000027r 2 2C 12 D0 BIT DSP
00002Ar 2 CA DEX
00002Br 2 8A TXA
00002Cr 2 D0 EF BNE PORTS_DECODER
00002Er 2
00002Er 2 A9 04 LDA #%00000100
000030r 2 20 rr rr JSR BLINK
000033r 2 ;Test 3. Testing writing to Video port (1->2->4->8->16->32->64->128->256->0)
000033r 2 A9 01 LDA #%00000001
000035r 2 8D 12 D0 VIDEO_PORT: STA DSP
000038r 2 0A ASL A ;shifting 1 to the left
000039r 2 D0 FA BNE VIDEO_PORT
00003Br 2
00003Br 2 A9 08 LDA #%00001000
00003Dr 2 20 rr rr JSR BLINK
000040r 2 ;Test 4. Testing writing to Video port via function call (256->128->64->32->16->8->4->2->1->0)
000040r 2 20 rr rr JSR VIDEO_PORT2
000043r 2
000043r 2
000043r 2 A9 10 LDA #%00010000
000045r 2 20 rr rr JSR BLINK
000048r 2 ;Test 5. Testing RAM with write&read (writing TEST_SYMBOL and testing read for every 4Kb block in 32Kb RAM)
000048r 2 ;Total blocks tested is 8 (4*8 = 32)
000048r 2 TEST_SYMBOL = $00
000048r 2
000048r 2
000048r 2 D8 RAMTEST: CLD
000049r 2 A2 00 LDX #$00
00004Br 2 A0 00 LDY #$00
00004Dr 2
00004Dr 2 A9 FF LDA #$FF
00004Fr 2 85 00 STA $00
000051r 2 A9 0F LDA #$0F
000053r 2 85 01 STA $01
000055r 2
000055r 2 A9 00 RAMLOOP: LDA #TEST_SYMBOL
000057r 2 91 00 STA ($00),Y
000059r 2 B1 00 LDA ($00),Y
00005Br 2 C9 00 CMP #TEST_SYMBOL
00005Dr 2 D0 11 BNE TEST_6
00005Fr 2 8A TXA
000060r 2 0A ASL A
000061r 2 69 01 ADC #$01
000063r 2 8D 12 D0 STA DSP
000066r 2 AA TAX
000067r 2 A5 01 LDA $01
000069r 2 69 10 ADC #$10
00006Br 2 85 01 STA $01
00006Dr 2 4C rr rr JMP RAMLOOP
000070r 2
000070r 2
000070r 2 EA TEST_6: NOP
000071r 2 A9 20 LDA #%00100000
000073r 2 20 rr rr JSR BLINK
000076r 2 ;Test 6-7. Testing BIT7 ports - keyboard and video
000076r 2 BIT7MASK = %10000000
000076r 2 KBD7MASK = %00000111
000076r 2 DSP7MASK = %00111111
000076r 2 ;Test 6. Testing keyboard BIT7 port read (turn on 3 LEDs on the left and show BIT7 in the last LED)
000076r 2
000076r 2 A2 08 KBDBIT7: LDX #TEST61_REPEATS
000078r 2 A9 07 LDA #KBD7MASK
00007Ar 2 8D 12 D0 STA DSP
00007Dr 2 KBD7LOOP:
00007Dr 2 AD 11 D0 LDA KBDCR
000080r 2 29 80 AND #BIT7MASK
000082r 2 09 07 ORA #KBD7MASK
000084r 2 8D 12 D0 STA DSP
000087r 2 KBDDSPLOOP:
000087r 2 AD 10 D0 LDA KBD
00008Ar 2 8D 12 D0 STA DSP
00008Dr 2 CA DEX
00008Er 2 D0 F7 BNE KBDDSPLOOP
000090r 2
000090r 2 ;POST success and end
000090r 2
000090r 2 A2 04 ENDPOST: LDX #POSTOK_REPEATS
000092r 2 ENDLOOP:
000092r 2 A9 55 LDA #%01010101
000094r 2 8D 12 D0 STA DSP
000097r 2 EA NOP
000098r 2 EA NOP
000099r 2 A9 AA LDA #%10101010
00009Br 2 8D 12 D0 STA DSP
00009Er 2 EA NOP
00009Fr 2 EA NOP
000087r 2 CA DEX
000088r 2 D0 F3 BNE KBD7LOOP
00008Ar 2
00008Ar 2 A9 40 LDA #%01000000
00008Cr 2 20 rr rr JSR BLINK
00008Fr 2 ;Test 7. Testing video BIT7 port read (turn on 6 LEDs on the left and show BIT7 in the last LED)
00008Fr 2 A2 08 DSPBIT7: LDX #TEST62_REPEATS
000091r 2 A9 3F LDA #DSP7MASK
000093r 2 8D 12 D0 STA DSP
000096r 2 DSP7LOOP:
000096r 2 AD 12 D0 LDA DSP
000099r 2 29 80 AND #BIT7MASK
00009Br 2 09 3F ORA #DSP7MASK
00009Dr 2 8D 12 D0 STA DSP
0000A0r 2 CA DEX
0000A1r 2 D0 EF BNE ENDLOOP
0000A1r 2 D0 F3 BNE DSP7LOOP
0000A3r 2
0000A3r 2 EA NOP
0000A4r 2 EA NOP
0000A5r 2
0000A5r 2 ;printing ASCII table
0000A5r 2 20 rr rr JSR ASCII_ECHO
0000A8r 2
0000A8r 2 EA ENDTEST: NOP
0000A9r 2 EA NOP
0000AAr 2 A9 EB LDA #END_TEST
0000ACr 2 20 EF FF JSR ECHO ;writing END_TEST to let video driver know that tests are over
0000AFr 2
0000AFr 2 A2 00 LDX #$00
0000B1r 2 PRINT_MSG:
0000B1r 2 BD rr rr LDA POSTCompletedText, X
0000B4r 2 F0 07 BEQ TO_WOZ_MON ;end printing at the end of the string (\n=0)
0000B6r 2 20 EF FF JSR ECHO
0000B9r 2 E8 INX
0000BAr 2 4C rr rr JMP PRINT_MSG
0000BDr 2
0000BDr 2 4C 00 FF TO_WOZ_MON: JMP RESET ;start Woz Monitor (operating system)
0000C0r 2
0000C0r 2 ;------------------------------------------------------
0000C0r 2 ; POST subroutines
0000C0r 2 ;------------------------------------------------------
0000C0r 2 ;blinking LEDs in Video port
0000C0r 2 A9 80 VIDEO_PORT2: LDA #%10000000
0000C2r 2 8D 12 D0 TEST2: STA DSP
0000C5r 2 4A LSR A
0000C6r 2 D0 FA BNE TEST2
0000C8r 2 60 RTS
0000C9r 2
0000C9r 2 ;blink with a LED in a position from A register
0000C9r 2 TURN_OFF = %00000000
0000C9r 2 A2 05 BLINK: LDX #LED_BLINKS
0000CBr 2 A8 TAY ;save A
0000CCr 2 98 NEXT_BLINK: TYA ;restore A
0000CDr 2 8D 12 D0 STA DSP
0000D0r 2 EA NOP
0000D1r 2 EA NOP
0000D2r 2 A9 00 LDA #TURN_OFF
0000D4r 2 8D 12 D0 STA DSP
0000D7r 2 EA NOP
0000D8r 2 EA NOP
0000D9r 2 CA DEX
0000DAr 2 D0 F0 BNE NEXT_BLINK
0000DCr 2 60 RTS
0000DDr 2
0000DDr 2 ;printing visible symbols of ACSII table via ECHO function from Woz Monitor
0000DDr 2 PRINT_ASCII:
0000DDr 2 A0 20 LDY #32
0000DFr 2 A2 5F LDX #95 ;80 in hex = 127 in decimal
0000E1r 2 ASCII_ECHO:
0000E1r 2 2C 12 D0 BIT DSP
0000E4r 2 30 FB BMI ASCII_ECHO
0000E6r 2 8C 12 D0 STY DSP
0000E9r 2 C8 INY
0000EAr 2 CA DEX
0000EBr 2 D0 F4 BNE ASCII_ECHO
0000EDr 2 60 RTS
0000EEr 2
0000EEr 2 2C 12 D0 CHAR_ECHO: BIT DSP
0000F1r 2 30 FB BMI CHAR_ECHO
0000F3r 2 8D 12 D0 STA DSP
0000F6r 2 60 RTS
0000F7r 2
0000F7r 2 POSTCompletedText:
0000F7r 2 0D 0D 50 4F .byte $0d, $0d, "POST ok (v.1.0). SmartyKit 1 is ready.", $0d, $0d, $00
0000FBr 2 53 54 20 6F
0000FFr 2 6B 20 28 76
000122r 2
000122r 1
000122r 1 .segment "FC00"
0000A3r 2 A9 80 LDA #%10000000
0000A5r 2 20 rr rr JSR BLINK
0000A8r 2 ;Test 8. Testing keyboard port read and write to Video port
0000A8r 2 A2 10 KBDTODSP: LDX #TEST7_REPEATS
0000AAr 2 A9 00 LDA #$00
0000ACr 2 8D 12 D0 STA DSP
0000AFr 2 KBDDSPLOOP:
0000AFr 2 AD 10 D0 LDA KBD
0000B2r 2 8D 12 D0 STA DSP
0000B5r 2 CA DEX
0000B6r 2 D0 F7 BNE KBDDSPLOOP
0000B8r 2
0000B8r 2 ;POST success and end
0000B8r 2 A2 08 ENDPOST: LDX #POSTOK_REPEATS
0000BAr 2 ENDLOOP:
0000BAr 2 A9 55 LDA #%01010101
0000BCr 2 8D 12 D0 STA DSP
0000BFr 2 EA NOP
0000C0r 2 EA NOP
0000C1r 2 A9 AA LDA #%10101010
0000C3r 2 8D 12 D0 STA DSP
0000C6r 2 EA NOP
0000C7r 2 EA NOP
0000C8r 2 CA DEX
0000C9r 2 D0 EF BNE ENDLOOP
0000CBr 2
0000CBr 2 ;printing ASCII table
0000CBr 2 20 rr rr JSR PRINT_ASCII
0000CEr 2
0000CEr 2 A9 EB ENDTEST: LDA #END_TEST
0000D0r 2 20 EF FF JSR ECHO ;writing END_TEST to let video driver know that tests are over
0000D3r 2
0000D3r 2 A2 00 LDX #$00
0000D5r 2 PRINT_MSG:
0000D5r 2 BD rr rr LDA POSTCompletedText, X
0000D8r 2 F0 07 BEQ QUIT_POST ;end printing at the end of the string (\n=0)
0000DAr 2 20 EF FF JSR ECHO
0000DDr 2 E8 INX
0000DEr 2 4C rr rr JMP PRINT_MSG
0000E1r 2
0000E1r 2
0000E1r 2 QUIT_POST:
0000E1r 2 20 rr rr JSR COPY_HEART ;writing Heart code picture to RAM
0000E4r 2 4C 00 FF JMP RESET ;start Woz Monitor (operating system)
0000E7r 2
0000E7r 2 ;------------------------------------------------------
0000E7r 2 ; POST subroutines
0000E7r 2 ;------------------------------------------------------
0000E7r 2 ;blinking LEDs in Video port
0000E7r 2 A9 80 VIDEO_PORT2: LDA #%10000000
0000E9r 2 8D 12 D0 TEST2: STA DSP
0000ECr 2 4A LSR A
0000EDr 2 D0 FA BNE TEST2
0000EFr 2 60 RTS
0000F0r 2
0000F0r 2 ;blink with a LED in a position from A register
0000F0r 2 TURN_OFF = %00000000
0000F0r 2 A2 05 BLINK: LDX #LED_BLINKS
0000F2r 2 A8 TAY ;save A
0000F3r 2 98 NEXT_BLINK: TYA ;restore A
0000F4r 2 8D 12 D0 STA DSP
0000F7r 2 EA NOP
0000F8r 2 EA NOP
0000F9r 2 A9 00 LDA #TURN_OFF
0000FBr 2 8D 12 D0 STA DSP
0000FEr 2 EA NOP
0000FFr 2 EA NOP
000100r 2 CA DEX
000101r 2 D0 F0 BNE NEXT_BLINK
000103r 2 60 RTS
000104r 2
000104r 2 ;printing visible symbols of ACSII table via ECHO function from Woz Monitor
000104r 2 PRINT_ASCII:
000104r 2 A0 00 LDY #$00 ;starting symbol
000106r 2 A2 80 LDX #$80 ;80 in hex = 127 in decimal
000108r 2 ASCII_ECHO:
000108r 2 2C 12 D0 BIT DSP
00010Br 2 30 FB BMI ASCII_ECHO
00010Dr 2 8C 12 D0 STY DSP
000110r 2 C8 INY
000111r 2 CA DEX
000112r 2 D0 F4 BNE ASCII_ECHO
000114r 2 60 RTS
000115r 2
000115r 2 2C 12 D0 CHAR_ECHO: BIT DSP
000118r 2 30 FB BMI CHAR_ECHO
00011Ar 2 8D 12 D0 STA DSP
00011Dr 2 60 RTS
00011Er 2
00011Er 2 POSTCompletedText:
00011Er 2 0D 0D 50 4F .byte $0d, $0d, "POST ok (v.1.0). SmartyKit 1 is ready.", $0d, $0d, $00
000122r 2 53 54 20 6F
000126r 2 6B 20 28 76
000149r 2
000149r 1
000149r 1 .segment "FC00"
000000r 1 ;printing 8x8 picture in the center with '*'
000000r 1 .include "8x8art.asm"
000000r 2 ;printing 8x8 picture in the center with '*'
@ -879,7 +875,7 @@ Current file: SmartyKit1_ROM.asm
00005Br 2 68 PLA
00005Cr 2 60 RTS
00005Dr 2 ;from HeartPicture
00005Dr 2 ;to PIC_ADDRESS ($88)
00005Dr 2 ;to PIC_ADDRESS
00005Dr 2 48 COPY_HEART: PHA
00005Er 2 8A TXA
00005Fr 2 48 PHA

View File

@ -1,35 +1,35 @@
.setcpu "6502"
.feature c_comments
/* SmartyKit 1 - ROM source
* http://www.smartykit.io/
* Copyright (C) 2020, Sergey Panarin <sergey@smartykit.io>
*
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
.setcpu "6502"
.segment "PICTURE"
.byte %00000000
.byte %01100110
.byte %11111111
.byte %11111111
.byte %11111111
.byte %01111110
.byte %00111100
.byte %00011000
.byte 00
.byte 00
Smiley: .byte $3c, $42, $a5, $81, $a5, $99, $42, $3c
Woz: .byte $88, $a8, $50, $07, $61, $92, $94, $67
; .byte "8*8 Pixel Art picture end", $0d, $00
.code
loop: lda #$12
jmp loop
nop
.segment "C000"
nop
.segment "E000"
JSR COPY_HEART
JMP $FC00
nop
.segment "F000"
;Woz face
.include "Apple30th_Woz.asm"
.segment "F800"
;Test from Apple-1 Operation Manual printing all ASCII symbols in a loop
.include "TestFromManual.asm"

Binary file not shown.

Binary file not shown.

BIN
ROM development/apple1.rom Normal file

Binary file not shown.