added i2c controller functions, added IDE interface functions, fiexd IDE schematics

This commit is contained in:
Dennis Gunia
2023-01-16 19:30:31 +01:00
parent 265342e7f7
commit 96c4dca4d5
34 changed files with 18931 additions and 3700 deletions

View File

@@ -8,6 +8,7 @@ beep:
push AF
push BC
push DE
beep_loop:
LD A,0x08
OUT (CS_PIO_AD), A
LD BC, 0x28
@@ -19,7 +20,7 @@ beep:
DEC DE
ld A,D
or E
jr NZ, beep
jr NZ, beep_loop
pop de
pop bc
pop af

View File

@@ -19,6 +19,8 @@ VAR_CONSOLE_BAUD equ 24 ;BAUD timer constant
org 0x0000
RST_00: ;Hardware Restart
ld sp, STACK_RAM_TOP
di
jp mon_start_init_sound
org 0x0008
@@ -65,8 +67,9 @@ var_ps2mem:
var_buffer:
defb 0 ;var lentgh
mon_var_template_end:
dephase
mon_var_template_end:
nop
;end memory var template
org 0x0050
mon_start_init_sound:
@@ -82,7 +85,7 @@ mon_start_init_sound:
;call AY0_WRITE_REG
mon_start_init_ctc:
ld sp, STACK_RAM_TOP
; Set CTC Ch2 Interrupt Vector
;LD A,40h ; it vector defined in bit 7­3,bit 2­1 don't care, bit 0 = 0
;OUT (IO_CTC0_C0),A
@@ -110,11 +113,15 @@ mon_start_init_ctc:
ld (var_curserchar),a
;ei ; Enable Interrupts
;jr mon_start_ram ;skip serial, cause not used atm
mon_start_init_serial:
call CONSOLE_INIT
;jp mon_start_complete
mon_start_ram:
ld hl,mon_var_template
ld de,mon_var_template_end
@@ -328,7 +335,7 @@ CMD_VIEW_ROW:
call print_a_hex
ld a, ' '
call print_char
ld c, 8 ;column counter
ld c, 16 ;column counter
CMD_VIEW_ROW_LOOP:
ld a,(hl)
call print_a_hex
@@ -494,7 +501,7 @@ STR_SyntaxError:
STR_Unknown:
db "cmd?",0
STR_HEXDUMP_HEADER:
db 'BASE 0 1 2 3 4 5 6 7',0
db 'BASE 0 1 2 3 4 5 6 7 8 A B C D E F',0
.include "xmodem.s"
;.include "debug.s"

View File

@@ -1,274 +1,274 @@
:03000000C35000EA
:03000800C3C40E60
:03001000C3C80E54
:03001800C3D40E40
:0700000031FFFFF3C35000C4
:03000800C3C10E63
:03001000C3C50E57
:03001800C3D10E43
:1000440000000000000000000000000000000000AC
:10005400000000000000000000000000000000009C
:0A0064000000000000000000000092
:1000500031FFFF3ECFD3F63EF5D3F6AF3204403248
:1000600005403E20320640CD7E02214400112A4048
:100070000100407E022303E5ED52E1C27300CDCAC8
:100080000221000FCDBF02114000CDD70ECD990047
:1000900076477AD34078D341C9CDD1023E3ECDB721
:1000A00002AF320040CDF802CAA500F5F1FE0DCA3C
:1000B000FC00FE0ACAA500FE08CAD600F5212940A8
:1000C00016003A00405F193C320040F177CDB7028C
:1000D00023AF77C3A5003A0040A7CAA5003D320070
:1000E000405F160021294019AF773E08CDB7023E88
:1000F00020CDB7023E08CDB702C3A5003A2940FE85
:1001000024CA2F01FE3FCA4E01FE21CAB801FE6972
:10011000CA1D02FE6FCAF401FE64CA3902FE78CA23
:100120004C0FCDD102212B0FCDBF02C39900C9AF17
:10013000322940212A40CD2403477BA7C2720221E5
:100140002C40CD24034F7BA7C272026069E9CDD158
:1001500002212A40CD2403477BA7C27202212C40F2
:10016000CD24034F7BA7C272023A2E40FE20C272FA
:1001700002212F40CD2403F57BA7C2720221300F4C
:10018000CDBF02F1606947CDD1027CCDE7027DCDC4
:10019000E7023E20CDB7020E087ECDE70223050D13
:1001A00078A7CAB20179A7CA87013E20CDB702C39A
:1001B0009901CDD102C39900212A40CD2403477B68
:1001C000A7C27202212C40CD24034F7BA7C272022A
:1001D000212E407EFE00CAEE01FE20C2720223CD17
:1001E0002403027BA7C27202032323C3D301CDD110
:1001F00002C39900212A40CD24034F7BA7C272027B
:100200003A2C40FE20C27202212D40CD2403F57B02
:10021000A7C27202F1ED79CDD102C39900212A4023
:10022000CD24034F7BA7C27202ED78F5CDD102F148
:10023000CDE702CDD102C39900CDD102212A40CD14
:100240002403477BA7C27202212C40CD24034F7B9D
:10025000A7C272023A2E40FE20C27202212F40CD68
:100260002403F57BA7C272026069F147CD7503C311
:100270009900CDD10221260FCDBF02C399003E4F78
:10028000D304DB01D3043E30D3093E18D3093E0426
:10029000D3093E44D3093E05D3093EE8D3093E01C4
:1002A000D3093E04D3093E02D3093E00D3093E03DD
:1002B000D3093EC1D309C9F5D308CDDC02F1C97E0B
:1002C000B72806CDB7022318F6C9210A03CDBF020D
:1002D000C93E0ACDB7023E0DCDB702C9973CD3093E
:1002E000DB09CB4728F6C9F5C5D5CD5B0378CDB77B
:1002F0000279CDB702D1C1F1CD1B0300AFD309DB29
:1003000009E601CD1203C8DB08C91B5B324A1B5B3F
:1003100048003E05D3093E68D309C93E05D3093ECE
:10032000EAD309C9E57ECD44033815CB27CB27CBCB
:1003300027CB2757237ECD44033805B2E11E00C9E1
:100340001EFFE1C9D630EA5903FE0A3805D607EA8E
:100350005903FE103003E60FC937C9F51F1F1F1FD1
:10036000CD6A0347F1CD6A034FC9E60FC630FE3AA6
:10037000D8C607C9C978321A412210417E321441C9
:10038000237E3215412BCD690478B1CA4B04ED436D
:100390001241030303030A321641030A5F030A579B
:1003A000ED531741030A3219412A1041CDB1043AE5
:1003B0001641472A10417ECDE7022310F93E68CD51
:1003C000B7023A1641473E0690473E20CDB7023E5F
:1003D00020CDB70210F43E20CDB702E52A1741CD5B
:1003E000BF023A1941B7CA48042A1241010800095C
:1003F0003A1941477EFE01CCD704FE02CCFE04FE32
:1004000003CC1B05FE04CC5705FE05CC6D05FE068E
:10041000CC7A05FE07CC9405FE08CCA105FE09CCDC
:10042000B605FE10CCCB05FE11CCDB05FE12CCE3ED
:1004300005FE13CC1B06FE0ACCAD05FE80CC3A06A9
:10044000FE81CC31062310ACE11810CDB1047ECD75
:10045000C90423E521860ECDBF02E1CDD1023A1AAF
:10046000413D321A41C27903C9E52184063A14415B
:100470004F7EFEFFCAAB04F523462B79A04FF1B99E
:10048000280B06000E07097E4F092318E023234E90
:10049000233A154146A0B92B2B2B280B06000E073B
:1004A000097E4F092318C6444DE1C906000E00E13C
:1004B000C93E24CDB7027CCDE7027DCDE7023E6880
:1004C000CDB7023E20CDB702C9CDE7023E68CDB719
:1004D000023E20CDB702C9E5ED5B1041131A6F1340
:1004E0001A673E24CDB7027CCDE7027DCDE7023E00
:1004F00068CDB7023E20CDB702CD7506E1C9C5ED86
:100500005B10411A1F1FE60EE5218F0E06004F09F2
:10051000CDBF023E20CDB702E1C1C9ED5B10411352
:100520001AF5E680C23C053E24CDB7023E2BCDB77E
:1005300002F1CDE7023E68CDB70218173E24CDB7D1
:10054000023E2DCDB702F1ED44CDE7023E68CDB7B6
:10055000021800CD7506C9ED5B1041131AFE4D2837
:10056000063E4ECDB702C93E49CDB702C9C5ED5BC7
:1005700010411AE638CDC904C1C9C5ED5B10411A56
:100580001F1F1FE607CD50063E20CDB7023E2CCDE3
:10059000B702C1C9C5ED5B10411AE607CD5006C1CF
:1005A000C9C5ED5B1041131ACDC904C1C9E5ED5BA6
:1005B000104113131806E5ED5B1041131A6F131A5F
:1005C000677CCDE7027DCDE702E1C9C5ED5B104157
:1005D0001A1F1F1FE607CD5006C1C9E5C5ED5B1008
:1005E000411807E5C5ED5B1041131A1F1F1FE606F2
:1005F000F52A10417EFEDD2809FEFD280A219F0E06
:10060000180821A70E180321AF0EF106004F097E2E
:10061000CDB702237ECDB702C1E1C9E5C5ED5B10C0
:10062000411A1F1F1FE606F52A10417E21B70E183A
:10063000D9E5C52A174106021807E5C52A1741065C
:10064000017E23A720FB05C24106CDBF02C1E1C93F
:10065000E5FE062811FE072815219F0E06004F090A
:100660007ECDB702E1C921BF0ECDBF02E1C93E4137
:10067000CDB702E1C978FE01C83E20CDB7023E2CBD
:10068000CDB702C900FF000001DC0A0027FF00000F
:1006900001A70B002FFF000001AB0B00EDFF44FF93
:1006A00002AF0B003FFF000001B30B0037FF00005B
:1006B00001B70B0076FF000001BB0B00F3FF000049
:1006C00001C00B00FBFF000001C30B00EDFF46FF64
:1006D00002C60B00EDFF56FF02CB0B00EDFF5EFFE5
:1006E00002D00B00EBFF000001D50B0008FF00005B
:1006F00001DF0B00D9FF000001EC0B00E3FF00005D
:1007000001F00B00DDFFE3FF02FC0B00FDFFE3FF48
:1007100002080C00EDFFA0FF02140C00EDFFB0FF7B
:1007200002180C00EDFFA8FF021D0C00EDFFB8FF42
:1007300002210C00EDFFA1FF02260C00EDFFB1FF2E
:10074000022A0C00EDFFA9FF022F0C00EDFFB9FFFC
:1007500002330C00C3FF000003E00A0101C2C7001E
:100760000003E00A0302800118FF000002E70A010B
:100770000338FF000002EB0A010330FF000002F221
:100780000A010328FF000002FA0A010320FF00000B
:1007900002010B0103E9FF000002090B00DDFFE984
:1007A000FF02120B00FDFFE9FF021B0B0010FF0010
:1007B0000002240B0103CDFF0000032A0B0101C43A
:1007C000C70000032A0B020201C9FF000001300B21
:1007D00000C0C7000001300B0102EDFF4DFF0235E4
:1007E0000B00EDFF45FF023A0B00C7C70000013FB9
:1007F0000B01050AFF000001440B001AFF00000175
:100800004E0B003AFF000003580B02098002FF0064
:100810000001620B0012FF0000016D0B0032FF00AF
:100820000003780B020980EDFF57FF02870B00EDF4
:10083000FF5FFF028F0B00EDFF47FF02970B00EDFC
:10084000FF4FFF029F0B0006C7000002830B02064A
:100850000840C0000001830B02060780F800000179
:10086000380C0107C6FF000002380C0108DDFF86C6
:10087000FF03400C020880FDFF86FF034F0C0208B7
:1008800080C8F80000015E0C01078EF80000025ECF
:100890000C0108DDFF8EFF03660C020880FDFF8E51
:1008A000FF03750C02088090F8000001840C01071A
:1008B000D6FF000002840C0108DDFF96FF03890CBF
:1008C000020880FDFF96FF03950C02088094F80053
:1008D0000001A10C0107DEFF000002A10C0108DDF0
:1008E000FF9EFF03A90C020880FDFF9EFF03B70CCB
:1008F000020880A0F8000001C50C0107E6FF000017
:1009000002C50C0108DDFFA6FF03CA0C020880FD2A
:10091000FFA6FF03D60C020880B0F8000001E20C2D
:100920000107F6FF000002E20C0108DDFFB6FF033D
:10093000E60C020880FDFFB6FF03F10C020880A858
:10094000F8000001FC0C0107EEFF000002FC0C01A6
:1009500008DDFFAEFF03010D020880FDFFAEFF03BF
:100960000D0D020880B8F8000001190D0107FEFF07
:10097000000002190D0108DDFFBEFF031D0D020876
:1009800080FDFFBEFF03280D02088004C7000001A0
:10099000330D0110DDFF34FF03380D020880FDFF29
:1009A00034FF03440D02088005C7000001500D010B
:1009B00010DDFF35FF03550D020880FDFF35FF03F5
:1009C000610D02088009CF0000016D0D0111EDFFDE
:1009D0004ACF02760D0112EDFF42CF027F0D0112C8
:1009E000DDFF09CF02880D0112FDFF09CF02910D35
:1009F000011203CF0000019A0D0111DDFF23FF0258
:100A00009F0D00FDFF23FF02A80D000BCF0000018A
:100A1000B10D0111DDFF2BFF02B60D00FDFF2BFF15
:100A200002BF0D0001CF000003C80D03118009DDD6
:100A3000FF21FF04CF0D010AFDFF21FF04D70D01A7
:100A40000A2AFF000003DF0D020980EDFF4BCF04EF
:100A5000EB0D0412800A81DDFF2AFF04F60D010A66
:100A6000FDFF2AFF04020E010A22FF0000030E0E02
:100A7000020A80EDFF43CF041A0E030A8012DDFF45
:100A800022CF04240E020A80FDFF22CF04300E0282
:100A90000A80F9FF0000013C0E00DDFFF9FF02466D
:100AA0000E00FDFFF9FF02500E00C5CF0000015AF5
:100AB0000E0113DDFFE5FF02600E00FDFFE5FF0202
:100AC000680E00C1CF000001700E0113DDFFE1FFD1
:100AD00002760E00FDFFE1FF027E0E004E4F500039
:100AE0004A5020002C20004A5220004A5220432C19
:100AF00020004A52204E432C20004A52205A2C20DB
:100B0000004A52204E5A2C20004A502028484C2996
:100B100020004A50202849582920004A50202849BE
:100B200059292000444A4E5A200043414C4C200091
:100B3000524554200052455449005245544E0052EB
:100B4000535420004C4420412C28424329004C445B
:100B500020412C28444529004C4420412C28006881
:100B600029004C4420284243292C2041004C442099
:100B7000284445292C2041004C4420280068292C79
:100B80002041004C4420004C4420412C2049004C82
:100B90004420412C2052004C4420492C2041004C40
:100BA0004420522C2041004441410043504C004E0F
:100BB000454700434346005343460048414C5400D8
:100BC000444900454900494D203000494D2031003D
:100BD000494D20320045582044452C20484C0045C2
:100BE000582041462C204146E280B200455858002A
:100BF000455820285350292C20484C00455820287F
:100C00005350292C20495800455820285350292C4E
:100C1000204959004C4449004C444952004C44443A
:100C2000004C444452004350490043504952004351
:100C3000504400435044520041444420412C200081
:100C400041444420412C202849582B006829004168
:100C5000444420412C202849592B00682900414454
:100C60004320412C200041444320412C2028495856
:100C70002B0068290041444320412C202849592B4E
:100C800000682900535542200053554220284958F6
:100C90002B00682900535542202849592B00682908
:100CA0000053424320412C200053424320412C2832
:100CB00049582B0068290053424320412C284959A8
:100CC0002B00682900414E442000414E4420284911
:100CD000582B00682900414E44202849592B0068B0
:100CE00029004F5220004F52202849582B006829D4
:100CF000004F52202849592B00682900584F522094
:100D000000584F52202849582B00682900584F524C
:100D1000202849592B0068290043502000435020C7
:100D20002849582B006829004350202849592B0096
:100D3000682900494E432000494E43202849582B3A
:100D400000682900494E43202849592B0068290092
:100D50004445432000444543202849582B00682936
:100D600000444543202849592B0068290041444448
:100D700020484C2C200041444320484C2C20005358
:100D8000424320484C2C20004144442049582C2008
:100D9000004144442049592C2000494E4320004939
:100DA0004E432049582C2000494E432049592C20BD
:100DB0000044454320004445432049582C2000442A
:100DC00045432049592C20004C4420002C20004C45
:100DD000442049582C20004C442049592C20004CD8
:100DE0004420484C2C2028006829004C4420002C2A
:100DF0002028006829004C442049582C20280068ED
:100E000029004C442049592C2028006829004C44D2
:100E100020280068292C20484C004C4420280068D9
:100E2000292C20004C4420280068292C20495800F7
:100E30004C4420280068292C204959004C44205358
:100E4000502C20484C004C442053502C2049580032
:100E50004C442053502C20495900505553482000F1
:100E6000505553482049580050555348204959007F
:100E7000505553482000505553482049580050556C
:100E80005348204959002E3F2E0020202020004E9C
:100E90005A5A004E434300504F504550004D0042B7
:100EA000434445484C5350424344454958535042AB
:100EB0004344454959535042434445484C414628D0
:100EC000484C2900CDB702C9C5D5E5CDF802F5F1EA
:100ED000E1D1C1C93E00C93E08D3F4012800CDF1DB
:100EE0000E3E00D3F4012400CDF10E1B7AB320E7AF
:100EF000C9ED44ED44ED44ED440B79B0C2F10EC9A7
:100F00005A3843204D6F6E69746F722056322062DA
:100F1000792044656E6E69732047756E696120287B
:100F200032303232290073796E3F00636D643F00C6
:100F300042415345203020203120203220203320D0
:100F4000203420203520203620203700CD12033ECB
:100F5000A7D3063E0ED3063E00D304212C10220454
:100F60004221000022FC4022FE403E42ED47ED5E61
:100F700021A710CDBF02FBCDDD103E43CD7D10CDAE
:100F80005010DA7A0FFE04CAE30FFE18CA7A0FFE79
:100F900001CA970FC3EB0FCD5010DACF104732FBC9
:100FA00040CD5010DACF1080FEFFC2EB0F3D781F0E
:100FB000E67F67783D0FE6806F1100441906800ECA
:100FC00000E5CD5010DACF10E177230C05C2C10F38
:100FD000CD5010DACF10570CCD5010DACF105F0C77
:100FE000C3C1103E06CD7D10C325103E18CD7D1027
:100FF0003E18CD7D103E18CD7D103E18CD7D103EA3
:1010000018CD7D103E18CD7D103E18CD7D103E18B8
:10101000CD7D103E18CD7D103E18CD7D103E18219F
:101020008E10CDBF02F3CDD102C39900F308D92AA7
:10103000FC402322FC40110404ED52C24B1021005D
:101040000022FC402AFE402322FE4008D9FBED4D41
:10105000F321000022FC4022FE40FBCD1B032AFEB0
:10106000407DFE03CA7B10AFD309DB09E601CA5EEF
:1010700010DB08F5CD1203F1373FC937C9D308CDCE
:101080008310C9973CD309DB09CB4728F6C94572C1
:10109000726F723A20756E6578706563746564204E
:1010A000627974650D0A00417761697420786D6F0B
:1010B00064656D20636F6E6E656374696F6E0D0A93
:1010C000003E06CD7D10CD5010DAC110C3850F3E15
:1010D00015CD7D10CD5010DACF10C3850F21FF0044
:0C10E00001010000000000ED42C818F7FC
:0B006400000000000000000000000091
:100050003ECFD3F63EF5D3F6AF3204403205403EF4
:1000600020320640CD7B02214400116E0001004089
:100070007E022303E5ED52E1C27000CDC7022103E9
:100080000FCDBC02114000CDD40ECD960076477A3C
:10009000D34078D341C9CDCE023E3ECDB402AF327B
:1000A0000040CDF502CAA200F5F1FE0DCAF900FE2E
:1000B0000ACAA200FE08CAD300F521294016003A58
:1000C00000405F193C320040F177CDB40223AF7796
:1000D000C3A2003A0040A7CAA2003D3200405F160A
:1000E0000021294019AF773E08CDB4023E20CDB49F
:1000F000023E08CDB402C3A2003A2940FE24CA2C15
:1001000001FE3FCA4B01FE21CAB501FE69CA1A02AF
:10011000FE6FCAF101FE64CA3602FE78CA4F0FCDE7
:10012000CE02212E0FCDBC02C39600C9AF322940AA
:10013000212A40CD2103477BA7C26F02212C40CD4D
:1001400021034F7BA7C26F026069E9CDCE02212A4D
:1001500040CD2103477BA7C26F02212C40CD210354
:100160004F7BA7C26F023A2E40FE20C26F02212FA2
:1001700040CD2103F57BA7C26F0221330FCDBC0216
:10018000F1606947CDCE027CCDE4027DCDE4023E34
:1001900020CDB4020E087ECDE40223050D78A7CA57
:1001A000AF0179A7CA84013E20CDB402C39601CD28
:1001B000CE02C39600212A40CD2103477BA7C26F00
:1001C00002212C40CD21034F7BA7C26F02212E407C
:1001D0007EFE00CAEB01FE20C26F0223CD21030286
:1001E0007BA7C26F02032323C3D001CDCE02C396E7
:1001F00000212A40CD21034F7BA7C26F023A2C4039
:10020000FE20C26F02212D40CD2103F57BA7C26FD6
:1002100002F1ED79CDCE02C39600212A40CD210313
:100220004F7BA7C26F02ED78F5CDCE02F1CDE4028F
:10023000CDCE02C39600CDCE02212A40CD21034768
:100240007BA7C26F02212C40CD21034F7BA7C26F39
:10025000023A2E40FE20C26F02212F40CD2103F52D
:100260007BA7C26F026069F147CD7203C39600CDD0
:10027000CE0221290FCDBC02C396003E4FD304DB32
:1002800001D3043E30D3093E18D3093E04D3093EBE
:1002900044D3093E05D3093EE8D3093E01D3093EC4
:1002A00004D3093E02D3093E00D3093E03D3093EDD
:1002B000C1D309C9F5D308CDD902F1C97EB7280643
:1002C000CDB4022318F6C9210703CDBC02C93E0AEA
:1002D000CDB4023E0DCDB402C9973CD309DB09CBA6
:1002E0004728F6C9F5C5D5CD580378CDB40279CDE8
:1002F000B402D1C1F1CD180300AFD309DB09E60187
:10030000CD0F03C8DB08C91B5B324A1B5B48003EAC
:1003100005D3093E68D309C93E05D3093EEAD3098E
:10032000C9E57ECD41033815CB27CB27CB27CB277B
:1003300057237ECD41033805B2E11E00C91EFFE1FF
:10034000C9D630EA5603FE0A3805D607EA5603FE38
:10035000103003E60FC937C9F51F1F1F1FCD6703F4
:1003600047F1CD67034FC9E60FC630FE3AD8C6073E
:10037000C9C978321A412210417E321441237E329B
:1003800015412BCD660478B1CA4804ED43124103F0
:100390000303030A321641030A5F030A57ED53179A
:1003A00041030A3219412A1041CDAE043A164147A1
:1003B0002A10417ECDE4022310F93E68CDB4023A02
:1003C0001641473E0690473E20CDB4023E20CDB4B4
:1003D0000210F43E20CDB402E52A1741CDBC023A0A
:1003E0001941B7CA45042A1241010800093A1941C6
:1003F000477EFE01CCD404FE02CCFB04FE03CC18E5
:1004000005FE04CC5405FE05CC6A05FE06CC770536
:10041000FE07CC9105FE08CC9E05FE09CCB305FE77
:1004200010CCC805FE11CCD805FE12CCE005FE1399
:10043000CC1806FE0ACCAA05FE80CC3706FE81CC7D
:100440002E062310ACE11810CDAE047ECDC60423D9
:10045000E521830ECDBC02E1CDCE023A1A413D32F8
:100460001A41C27603C9E52181063A14414F7EFE46
:10047000FFCAA804F523462B79A04FF1B9280B0633
:10048000000E07097E4F092318E023234E233A1557
:100490004146A0B92B2B2B280B06000E07097E4FD7
:1004A000092318C6444DE1C906000E00E1C93E24E7
:1004B000CDB4027CCDE4027DCDE4023E68CDB40231
:1004C0003E20CDB402C9CDE4023E68CDB4023E2048
:1004D000CDB402C9E5ED5B1041131A6F131A673EE4
:1004E00024CDB4027CCDE4027DCDE4023E68CDB4DF
:1004F000023E20CDB402CD7206E1C9C5ED5B1041CC
:100500001A1F1FE60EE5218C0E06004F09CDBC0216
:100510003E20CDB402E1C1C9ED5B1041131AF5E6EE
:1005200080C239053E24CDB4023E2BCDB402F1CDBC
:10053000E4023E68CDB40218173E24CDB4023E2D2D
:10054000CDB402F1ED44CDE4023E68CDB402180012
:10055000CD7206C9ED5B1041131AFE4D28063E4EC2
:10056000CDB402C93E49CDB402C9C5ED5B10411AF4
:10057000E638CDC604C1C9C5ED5B10411A1F1F1F67
:10058000E607CD4D063E20CDB4023E2CCDB402C1CF
:10059000C9C5ED5B10411AE607CD4D06C1C9C5EDD1
:1005A0005B1041131ACDC604C1C9E5ED5B104113C0
:1005B000131806E5ED5B1041131A6F131A677CCD13
:1005C000E4027DCDE402E1C9C5ED5B10411A1F1FB5
:1005D0001FE607CD4D06C1C9E5C5ED5B1041180703
:1005E000E5C5ED5B1041131A1F1F1FE606F52A1023
:1005F000417EFEDD2809FEFD280A219C0E180821F7
:10060000A40E180321AC0EF106004F097ECDB402F2
:10061000237ECDB402C1E1C9E5C5ED5B10411A1FCF
:100620001F1FE606F52A10417E21B40E18D9E5C534
:100630002A174106021807E5C52A174106017E233D
:10064000A720FB05C23E06CDBC02C1E1C9E5FE06FE
:100650002811FE072815219C0E06004F097ECDB4F7
:1006600002E1C921BC0ECDBC02E1C93E41CDB402BC
:10067000E1C978FE01C83E20CDB4023E2CCDB402C3
:10068000C900FF000001D90A0027FF000001A40BE8
:10069000002FFF000001A80B00EDFF44FF02AC0B90
:1006A000003FFF000001B00B0037FF000001B40B5A
:1006B0000076FF000001B80B00F3FF000001BD0B46
:1006C00000FBFF000001C00B00EDFF46FF02C30B63
:1006D00000EDFF56FF02C80B00EDFF5EFF02CD0BE1
:1006E00000EBFF000001D20B0008FF000001DC0B53
:1006F00000D9FF000001E90B00E3FF000001ED0B52
:1007000000DDFFE3FF02F90B00FDFFE3FF02050C34
:1007100000EDFFA0FF02110C00EDFFB0FF02150C71
:1007200000EDFFA8FF021A0C00EDFFB8FF021E0C3F
:1007300000EDFFA1FF02230C00EDFFB1FF02270C2B
:1007400000EDFFA9FF022C0C00EDFFB9FF02300CF9
:1007500000C3FF000003DD0A0101C2C7000003DD82
:100760000A0302800118FF000002E40A010338FFB7
:10077000000002E80A010330FF000002EF0A010353
:1007800028FF000002F70A010320FF000002FE0A12
:100790000103E9FF000002060B00DDFFE9FF020F85
:1007A0000B00FDFFE9FF02180B0010FF0000022103
:1007B0000B0103CDFF000003270B0101C4C700009C
:1007C00003270B020201C9FF0000012D0B00C0C767
:1007D0000000012D0B0102EDFF4DFF02320B00ED79
:1007E000FF45FF02370B00C7C70000013C0B0105A6
:1007F0000AFF000001410B001AFF0000014B0B0033
:100800003AFF000003550B02098002FF0000015F60
:100810000B0012FF0000016A0B0032FF000003759D
:100820000B020980EDFF57FF02840B00EDFF5FFF15
:10083000028C0B00EDFF47FF02940B00EDFF4FFF12
:10084000029C0B0006C7000002800B02060840C095
:10085000000001800B02060780F8000001350C0142
:1008600007C6FF000002350C0108DDFF86FF033DCF
:100870000C020880FDFF86FF034C0C020880C8F8BC
:100880000000015B0C01078EF80000025B0C010800
:10089000DDFF8EFF03630C020880FDFF8EFF0372F5
:1008A0000C02088090F8000001810C0107D6FF00BF
:1008B0000002810C0108DDFF96FF03860C02088010
:1008C000FDFF96FF03920C02088094F80000019E41
:1008D0000C0107DEFF0000029E0C0108DDFF9EFFF9
:1008E00003A60C020880FDFF9EFF03B40C020880E3
:1008F000A0F8000001C20C0107E6FF000002C20CD4
:100900000108DDFFA6FF03C70C020880FDFFA6FF5C
:1009100003D30C020880B0F8000001DF0C0107F6D9
:10092000FF000002DF0C0108DDFFB6FF03E30C024D
:100930000880FDFFB6FF03EE0C020880A8F8000057
:1009400001F90C0107EEFF000002F90C0108DDFFC0
:10095000AEFF03FE0C020880FDFFAEFF030A0D028E
:100960000880B8F8000001160D0107FEFF00000224
:10097000160D0108DDFFBEFF031A0D020880FDFF02
:10098000BEFF03250D02088004C7000001300D01E1
:1009900010DDFF34FF03350D020880FDFF34FF0337
:1009A000410D02088005C70000014D0D0110DDFF5B
:1009B00035FF03520D020880FDFF35FF035E0D0277
:1009C000088009CF0000016A0D0111EDFF4ACF0236
:1009D000730D0112EDFF42CF027C0D0112DDFF0904
:1009E000CF02850D0112FDFF09CF028E0D0112030A
:1009F000CF000001970D0111DDFF23FF029C0D00C8
:100A0000FDFF23FF02A50D000BCF000001AE0D017D
:100A100011DDFF2BFF02B30D00FDFF2BFF02BC0D0C
:100A20000001CF000003C50D03118009DDFF21FF88
:100A300004CC0D010AFDFF21FF04D40D010A2AFF99
:100A4000000003DC0D020980EDFF4BCF04E80D042C
:100A500012800A81DDFF2AFF04F30D010AFDFF2A3F
:100A6000FF04FF0D010A22FF0000030B0E020A80A3
:100A7000EDFF43CF04170E030A8012DDFF22CF04DF
:100A8000210E020A80FDFF22CF042D0E020A80F9FA
:100A9000FF000001390E00DDFFF9FF02430E00FDEB
:100AA000FFF9FF024D0E00C5CF000001570E0113E4
:100AB000DDFFE5FF025D0E00FDFFE5FF02650E00B4
:100AC000C1CF0000016D0E0113DDFFE1FF02730EC7
:100AD00000FDFFE1FF027B0E004E4F50004A502008
:100AE000002C20004A5220004A5220432C20004A69
:100AF00052204E432C20004A52205A2C20004A52A9
:100B0000204E5A2C20004A502028484C2920004AC8
:100B100050202849582920004A5020284959292086
:100B200000444A4E5A200043414C4C200052455448
:100B3000200052455449005245544E00525354200F
:100B4000004C4420412C28424329004C4420412C95
:100B500028444529004C4420412C28006829004C99
:100B60004420284243292C2041004C44202844455D
:100B7000292C2041004C4420280068292C204100C9
:100B80004C4420004C4420412C2049004C4420413E
:100B90002C2052004C4420492C2041004C4420522F
:100BA0002C2041004441410043504C004E45470039
:100BB000434346005343460048414C5400444900D7
:100BC000454900494D203000494D203100494D2014
:100BD000320045582044452C20484C0045582041BF
:100BE000462C204146E280B2004558580045582026
:100BF000285350292C20484C004558202853502970
:100C00002C20495800455820285350292C20495958
:100C1000004C4449004C444952004C4444004C446C
:100C2000445200435049004350495200435044004D
:100C3000435044520041444420412C20004144444C
:100C400020412C202849582B006829004144442089
:100C5000412C202849592B00682900414443204158
:100C60002C200041444320412C202849582B006867
:100C7000290041444320412C202849592B00682950
:100C8000005355422000535542202849582B0068F4
:100C90002900535542202849592B00682900534206
:100CA0004320412C200053424320412C2849582BFB
:100CB0000068290053424320412C2849592B0068E1
:100CC0002900414E442000414E44202849582B0021
:100CD000682900414E44202849592B006829004FBB
:100CE0005220004F52202849582B006829004F52AB
:100CF000202849592B00682900584F522000584F8E
:100D000052202849582B00682900584F5220284962
:100D1000592B00682900435020004350202849588F
:100D20002B006829004350202849592B00682900CE
:100D3000494E432000494E43202849582B0068293A
:100D400000494E43202849592B0068290044454357
:100D50002000444543202849582B00682900444579
:100D600043202849592B0068290041444420484C1D
:100D70002C200041444320484C2C20005342432067
:100D8000484C2C20004144442049582C2000414428
:100D9000442049592C2000494E432000494E43200D
:100DA00049582C2000494E432049592C20004445E5
:100DB0004320004445432049582C2000444543200B
:100DC00049592C20004C4420002C20004C44204940
:100DD000582C20004C442049592C20004C442048D9
:100DE0004C2C2028006829004C4420002C2028008E
:100DF0006829004C442049582C2028006829004CC0
:100E0000442049592C2028006829004C44202800FF
:100E100068292C20484C004C4420280068292C20AC
:100E2000004C4420280068292C204958004C4420BC
:100E3000280068292C204959004C442053502C206C
:100E4000484C004C442053502C204958004C44201E
:100E500053502C20495900505553482000505553A9
:100E6000482049580050555348204959005055537F
:100E700048200050555348204958005055534820A9
:100E80004959002E3F2E0020202020004E5A5A00A3
:100E90004E434300504F504550004D00424344459F
:100EA000484C5350424344454958535042434445AB
:100EB0004959535042434445484C414628484C29DF
:100EC00000CDB402C9C5D5E5CDF502F5F1E1D1C13A
:100ED000C93E00C9F5C5D53E08D3F4012800CDF4BC
:100EE0000E3E00D3F4012400CDF40E1B7AB320E7AC
:100EF000D1C1F1C9ED44ED44ED44ED440B79B0C2EC
:100F0000F40EC95A3843204D6F6E69746F722056C3
:100F1000322062792044656E6E69732047756E6970
:100F200061202832303232290073796E3F00636DC0
:100F3000643F0042415345203020203120203220A0
:100F4000203320203420203520203620203700CDAB
:100F50000F033EA7D3063E0ED3063E00D304212F37
:100F60001022044221000022FC4022FE403E42EDBD
:100F700047ED5E21AA10CDBC02FBCDE0103E43CD73
:100F80008010CD5310DA7D0FFE04CAE60FFE18CA9A
:100F90007D0FFE01CA9A0FC3EE0FCD5310DAD210A7
:100FA0004732FB40CD5310DAD21080FEFFC2EE0F65
:100FB0003D781FE67F67783D0FE6806F110044198A
:100FC00006800E00E5CD5310DAD210E177230C0530
:100FD000C2C40FCD5310DAD210570CCD5310DAD251
:100FE000105F0CC3C4103E06CD8010C328103E18FD
:100FF000CD80103E18CD80103E18CD80103E18CD0B
:1010000080103E18CD80103E18CD80103E18CD8047
:10101000103E18CD80103E18CD80103E18CD8010A7
:101020003E18219110CDBC02F3CDCE02C39600F341
:1010300008D92AFC402322FC40110404ED52C24E80
:101040001021000022FC402AFE402322FE4008D945
:10105000FBED4DF321000022FC4022FE40FBCD18A9
:10106000032AFE407DFE03CA7E10AFD309DB09E6EA
:1010700001CA6110DB08F5CD0F03F1373FC937C94D
:10108000D308CD8610C9973CD309DB09CB4728F696
:10109000C94572726F723A20756E657870656374B7
:1010A000656420627974650D0A0041776169742076
:1010B000786D6F64656D20636F6E6E656374696FC4
:1010C0006E0D0A003E06CD8010CD5310DAC410C359
:1010D000880F3E15CD8010CD5310DAD210C3880F83
:0F10E00021FF0001010000000000ED42C818F7D9
:00000001FF

File diff suppressed because it is too large Load Diff

View File

@@ -1,237 +1,238 @@
;This file is generated by the build script.
;Do not make any changes here!
AY0_WRITE_REG equ 0x91
A_RTS_OFF equ 0x312
A_RTS_ON equ 0x31B
CMD_DASM equ 0x239
CMD_EXEC equ 0x12F
CMD_IO_READ equ 0x21D
CMD_IO_WRITE equ 0x1F4
CMD_SET equ 0x1B8
CMD_SET_END equ 0x1EE
CMD_SET_LOOP equ 0x1D3
CMD_SYNTAX_ERROR equ 0x272
CMD_VIEW equ 0x14E
CMD_VIEW_END equ 0x1B2
CMD_VIEW_ROW equ 0x187
CMD_VIEW_ROW_LOOP equ 0x199
CONSOLE_INIT equ 0x27E
CONSOLE_INIT_CTC equ 0x27E
CONSOLE_INIT_SIO equ 0x286
DHEX_TO_BYTE equ 0x324
DHEX_TO_BYTE_FAILED equ 0x340
EXEC_RST_08 equ 0xEC4
EXEC_RST_10 equ 0xEC8
EXEC_RST_18 equ 0xED4
HEX_TO_BIN equ 0x344
HEX_TO_BIN_2 equ 0x352
HEX_TO_INVALID_2 equ 0x359
AY0_WRITE_REG equ 0x8E
A_RTS_OFF equ 0x30F
A_RTS_ON equ 0x318
CMD_DASM equ 0x236
CMD_EXEC equ 0x12C
CMD_IO_READ equ 0x21A
CMD_IO_WRITE equ 0x1F1
CMD_SET equ 0x1B5
CMD_SET_END equ 0x1EB
CMD_SET_LOOP equ 0x1D0
CMD_SYNTAX_ERROR equ 0x26F
CMD_VIEW equ 0x14B
CMD_VIEW_END equ 0x1AF
CMD_VIEW_ROW equ 0x184
CMD_VIEW_ROW_LOOP equ 0x196
CONSOLE_INIT equ 0x27B
CONSOLE_INIT_CTC equ 0x27B
CONSOLE_INIT_SIO equ 0x283
DHEX_TO_BYTE equ 0x321
DHEX_TO_BYTE_FAILED equ 0x33D
EXEC_RST_08 equ 0xEC1
EXEC_RST_10 equ 0xEC5
EXEC_RST_18 equ 0xED1
HEX_TO_BIN equ 0x341
HEX_TO_BIN_2 equ 0x34F
HEX_TO_INVALID_2 equ 0x356
INT_VEC equ 0x1B
Includes equ 0x27E
MSG_CLEAR equ 0x30A
MSG_ERROR equ 0x108E
MSG_START equ 0x10A7
PROMPT_BEGIN equ 0x99
PROMPT_BEGIN_READ_BACKSPACE equ 0xD6
PROMPT_BEGIN_READ_LOOP equ 0xA5
PROMPT_BEGIN_READ_PROCESS equ 0xFC
Includes equ 0x27B
MSG_CLEAR equ 0x307
MSG_ERROR equ 0x1091
MSG_START equ 0x10AA
PROMPT_BEGIN equ 0x96
PROMPT_BEGIN_READ_BACKSPACE equ 0xD3
PROMPT_BEGIN_READ_LOOP equ 0xA2
PROMPT_BEGIN_READ_PROCESS equ 0xF9
RST_00 equ 0x00
RST_08 equ 0x08
RST_10 equ 0x10
RST_18 equ 0x18
STRCONV_BYTES_TO_HEX equ 0x35B
STRCONV_BYTES_TO_HEX_1 equ 0x36A
STRCONV_BYTES_TO_HEX_2 equ 0x374
STR_Banner_Start equ 0xF00
STR_HEXDUMP_HEADER equ 0xF30
STR_SyntaxError equ 0xF26
STR_Unknown equ 0xF2B
beep equ 0xED7
beep_pause equ 0xEF1
dasm_00 equ 0xADC
dasm_01 equ 0xDC8
dasm_02 equ 0xB62
dasm_03 equ 0xD9A
dasm_08 equ 0xBDF
dasm_09 equ 0xD6D
dasm_0A equ 0xB44
dasm_0B equ 0xDB1
dasm_10 equ 0xB24
dasm_12 equ 0xB6D
dasm_18 equ 0xAE7
dasm_1A equ 0xB4E
dasm_20 equ 0xB01
dasm_22 equ 0xE0E
dasm_27 equ 0xBA7
dasm_28 equ 0xAFA
dasm_2A equ 0xDDF
dasm_2F equ 0xBAB
dasm_30 equ 0xAF2
dasm_32 equ 0xB78
dasm_37 equ 0xBB7
dasm_38 equ 0xAEB
dasm_3A equ 0xB58
dasm_3F equ 0xBB3
dasm_76 equ 0xBBB
dasm_80C6 equ 0xC38
dasm_BE equ 0xBD5
dasm_C3 equ 0xAE0
dasm_C88E equ 0xC5E
dasm_C9 equ 0xB30
dasm_CD equ 0xB2A
dasm_D9 equ 0xBEC
dasm_DD equ 0xB12
dasm_DD_01 equ 0xDCF
dasm_DD_09 equ 0xD88
dasm_DD_22 equ 0xE24
dasm_DD_23 equ 0xD9F
dasm_DD_2A equ 0xDF6
dasm_DD_2B equ 0xDB6
dasm_DD_34 equ 0xD38
dasm_DD_35 equ 0xD55
dasm_DD_86 equ 0xC40
dasm_DD_8E equ 0xC66
dasm_DD_96 equ 0xC89
dasm_DD_9E equ 0xCA9
dasm_DD_A6 equ 0xCCA
dasm_DD_AE equ 0xD01
dasm_DD_B6 equ 0xCE6
dasm_DD_BE equ 0xD1D
dasm_DD_E1 equ 0xE76
dasm_DD_E3 equ 0xBFC
dasm_DD_E5 equ 0xE60
dasm_DD_F9 equ 0xE46
dasm_E1 equ 0xE70
dasm_E3 equ 0xBF0
dasm_E5 equ 0xE5A
dasm_E9 equ 0xB09
dasm_ED_42 equ 0xD7F
dasm_ED_43 equ 0xE1A
dasm_ED_44 equ 0xBAF
dasm_ED_45 equ 0xB3A
dasm_ED_46 equ 0xBC6
dasm_ED_4A equ 0xD76
dasm_ED_4B equ 0xDEB
dasm_ED_4D equ 0xB35
dasm_ED_56 equ 0xBCB
dasm_ED_5E equ 0xBD0
dasm_ED_A0 equ 0xC14
dasm_ED_A1 equ 0xC26
dasm_ED_A8 equ 0xC1D
dasm_ED_A9 equ 0xC2F
dasm_ED_B0 equ 0xC18
dasm_ED_B1 equ 0xC2A
dasm_ED_B8 equ 0xC21
dasm_ED_B9 equ 0xC33
dasm_F3 equ 0xBC0
dasm_F9 equ 0xE3C
dasm_FB equ 0xBC3
dasm_FD equ 0xB1B
dasm_FD_01 equ 0xDD7
dasm_FD_09 equ 0xD91
dasm_FD_22 equ 0xE30
dasm_FD_23 equ 0xDA8
dasm_FD_2A equ 0xE02
dasm_FD_2B equ 0xDBF
dasm_FD_34 equ 0xD44
dasm_FD_35 equ 0xD61
dasm_FD_86 equ 0xC4F
dasm_FD_8E equ 0xC75
dasm_FD_96 equ 0xC95
dasm_FD_9E equ 0xCB7
dasm_FD_A6 equ 0xCD6
dasm_FD_AE equ 0xD0D
dasm_FD_B6 equ 0xCF1
dasm_FD_BE equ 0xD28
dasm_FD_E1 equ 0xE7E
dasm_FD_E3 equ 0xC08
dasm_FD_E5 equ 0xE68
dasm_FD_F9 equ 0xE50
dasm_FF equ 0xB3F
dasm_UU equ 0xE86
dasm_UW equ 0xE8A
dasm__AND equ 0xCC5
dasm__CP equ 0xD19
dasm__DEC equ 0xD50
dasm__ED_47 equ 0xB97
dasm__ED_4F equ 0xB9F
dasm__ED_57 equ 0xB87
dasm__ED_5F equ 0xB8F
dasm__INC equ 0xD33
dasm__LD equ 0xB83
dasm__OR equ 0xCE2
dasm__SBC equ 0xCA1
dasm__SUB equ 0xC84
dasm__XOR equ 0xCFC
dasm_opcode_table equ 0x684
dasm_print16hex_addr equ 0x4B1
dasm_print8hex equ 0x4C9
dasm_printFlags_table equ 0xE8F
dasm_printRegister8_table equ 0xE9F
dasm_printRegister8_table_HL equ 0xEBF
dasm_printRegisterIX_table equ 0xEA7
dasm_printRegisterIY_table equ 0xEAF
dasm_printRegisterSP_table equ 0xEB7
disassemble equ 0x375
disassemble_continue equ 0x45B
disassemble_err equ 0x44B
disassemble_next equ 0x379
disassemble_print_opcode_params_end equ 0x448
disassemble_print_opcode_params_loop equ 0x3F4
disassemble_print_opcode_raw equ 0x3B6
disassemble_print_opcode_raw_fill equ 0x3CA
disassemble_table_first_match equ 0x48D
disassemble_table_found equ 0x4A7
disassemble_table_notfound equ 0x4AB
disassemble_table_seek equ 0x469
disassemble_table_seek_loop equ 0x46D
mon_start_complete equ 0x7E
STRCONV_BYTES_TO_HEX equ 0x358
STRCONV_BYTES_TO_HEX_1 equ 0x367
STRCONV_BYTES_TO_HEX_2 equ 0x371
STR_Banner_Start equ 0xF03
STR_HEXDUMP_HEADER equ 0xF33
STR_SyntaxError equ 0xF29
STR_Unknown equ 0xF2E
beep equ 0xED4
beep_loop equ 0xED7
beep_pause equ 0xEF4
dasm_00 equ 0xAD9
dasm_01 equ 0xDC5
dasm_02 equ 0xB5F
dasm_03 equ 0xD97
dasm_08 equ 0xBDC
dasm_09 equ 0xD6A
dasm_0A equ 0xB41
dasm_0B equ 0xDAE
dasm_10 equ 0xB21
dasm_12 equ 0xB6A
dasm_18 equ 0xAE4
dasm_1A equ 0xB4B
dasm_20 equ 0xAFE
dasm_22 equ 0xE0B
dasm_27 equ 0xBA4
dasm_28 equ 0xAF7
dasm_2A equ 0xDDC
dasm_2F equ 0xBA8
dasm_30 equ 0xAEF
dasm_32 equ 0xB75
dasm_37 equ 0xBB4
dasm_38 equ 0xAE8
dasm_3A equ 0xB55
dasm_3F equ 0xBB0
dasm_76 equ 0xBB8
dasm_80C6 equ 0xC35
dasm_BE equ 0xBD2
dasm_C3 equ 0xADD
dasm_C88E equ 0xC5B
dasm_C9 equ 0xB2D
dasm_CD equ 0xB27
dasm_D9 equ 0xBE9
dasm_DD equ 0xB0F
dasm_DD_01 equ 0xDCC
dasm_DD_09 equ 0xD85
dasm_DD_22 equ 0xE21
dasm_DD_23 equ 0xD9C
dasm_DD_2A equ 0xDF3
dasm_DD_2B equ 0xDB3
dasm_DD_34 equ 0xD35
dasm_DD_35 equ 0xD52
dasm_DD_86 equ 0xC3D
dasm_DD_8E equ 0xC63
dasm_DD_96 equ 0xC86
dasm_DD_9E equ 0xCA6
dasm_DD_A6 equ 0xCC7
dasm_DD_AE equ 0xCFE
dasm_DD_B6 equ 0xCE3
dasm_DD_BE equ 0xD1A
dasm_DD_E1 equ 0xE73
dasm_DD_E3 equ 0xBF9
dasm_DD_E5 equ 0xE5D
dasm_DD_F9 equ 0xE43
dasm_E1 equ 0xE6D
dasm_E3 equ 0xBED
dasm_E5 equ 0xE57
dasm_E9 equ 0xB06
dasm_ED_42 equ 0xD7C
dasm_ED_43 equ 0xE17
dasm_ED_44 equ 0xBAC
dasm_ED_45 equ 0xB37
dasm_ED_46 equ 0xBC3
dasm_ED_4A equ 0xD73
dasm_ED_4B equ 0xDE8
dasm_ED_4D equ 0xB32
dasm_ED_56 equ 0xBC8
dasm_ED_5E equ 0xBCD
dasm_ED_A0 equ 0xC11
dasm_ED_A1 equ 0xC23
dasm_ED_A8 equ 0xC1A
dasm_ED_A9 equ 0xC2C
dasm_ED_B0 equ 0xC15
dasm_ED_B1 equ 0xC27
dasm_ED_B8 equ 0xC1E
dasm_ED_B9 equ 0xC30
dasm_F3 equ 0xBBD
dasm_F9 equ 0xE39
dasm_FB equ 0xBC0
dasm_FD equ 0xB18
dasm_FD_01 equ 0xDD4
dasm_FD_09 equ 0xD8E
dasm_FD_22 equ 0xE2D
dasm_FD_23 equ 0xDA5
dasm_FD_2A equ 0xDFF
dasm_FD_2B equ 0xDBC
dasm_FD_34 equ 0xD41
dasm_FD_35 equ 0xD5E
dasm_FD_86 equ 0xC4C
dasm_FD_8E equ 0xC72
dasm_FD_96 equ 0xC92
dasm_FD_9E equ 0xCB4
dasm_FD_A6 equ 0xCD3
dasm_FD_AE equ 0xD0A
dasm_FD_B6 equ 0xCEE
dasm_FD_BE equ 0xD25
dasm_FD_E1 equ 0xE7B
dasm_FD_E3 equ 0xC05
dasm_FD_E5 equ 0xE65
dasm_FD_F9 equ 0xE4D
dasm_FF equ 0xB3C
dasm_UU equ 0xE83
dasm_UW equ 0xE87
dasm__AND equ 0xCC2
dasm__CP equ 0xD16
dasm__DEC equ 0xD4D
dasm__ED_47 equ 0xB94
dasm__ED_4F equ 0xB9C
dasm__ED_57 equ 0xB84
dasm__ED_5F equ 0xB8C
dasm__INC equ 0xD30
dasm__LD equ 0xB80
dasm__OR equ 0xCDF
dasm__SBC equ 0xC9E
dasm__SUB equ 0xC81
dasm__XOR equ 0xCF9
dasm_opcode_table equ 0x681
dasm_print16hex_addr equ 0x4AE
dasm_print8hex equ 0x4C6
dasm_printFlags_table equ 0xE8C
dasm_printRegister8_table equ 0xE9C
dasm_printRegister8_table_HL equ 0xEBC
dasm_printRegisterIX_table equ 0xEA4
dasm_printRegisterIY_table equ 0xEAC
dasm_printRegisterSP_table equ 0xEB4
disassemble equ 0x372
disassemble_continue equ 0x458
disassemble_err equ 0x448
disassemble_next equ 0x376
disassemble_print_opcode_params_end equ 0x445
disassemble_print_opcode_params_loop equ 0x3F1
disassemble_print_opcode_raw equ 0x3B3
disassemble_print_opcode_raw_fill equ 0x3C7
disassemble_table_first_match equ 0x48A
disassemble_table_found equ 0x4A4
disassemble_table_notfound equ 0x4A8
disassemble_table_seek equ 0x466
disassemble_table_seek_loop equ 0x46A
mon_start_complete equ 0x7B
mon_start_init_ctc equ 0x50
mon_start_init_serial equ 0x67
mon_start_init_serial equ 0x64
mon_start_init_sound equ 0x50
mon_start_ram equ 0x6A
mon_start_ram_loop equ 0x73
mon_start_ram equ 0x67
mon_start_ram_loop equ 0x70
mon_var_template equ 0x44
mon_var_template_end equ 0x402A
param_01 equ 0x4D7
param_02 equ 0x4FE
param_03 equ 0x51B
param_03_done equ 0x553
param_03_neg equ 0x53C
param_04 equ 0x557
param_04_i equ 0x567
param_05 equ 0x56D
param_06 equ 0x57A
param_07 equ 0x594
param_08 equ 0x5A1
param_09 equ 0x5B6
param_09_0A equ 0x5BC
param_0A equ 0x5AD
param_10 equ 0x5CB
param_11 equ 0x5DB
param_11_12 equ 0x5EA
param_11_12_all equ 0x60A
param_11_12_def equ 0x5FD
param_11_12_ix equ 0x602
param_11_12_iy equ 0x607
param_12 equ 0x5E3
param_13 equ 0x61B
param_80 equ 0x63A
param_80_seek equ 0x641
param_81 equ 0x631
param_comma equ 0x675
param_printRegister equ 0x650
param_printRegisterA equ 0x66E
param_printRegisterHL equ 0x666
print_a_hex equ 0x2E7
print_char equ 0x2B7
print_clear equ 0x2CA
print_newLine equ 0x2D1
print_str equ 0x2BF
print_str_end equ 0x2C9
print_wait_out equ 0x2DC
read_char equ 0x2F8
mon_var_template_end equ 0x6E
param_01 equ 0x4D4
param_02 equ 0x4FB
param_03 equ 0x518
param_03_done equ 0x550
param_03_neg equ 0x539
param_04 equ 0x554
param_04_i equ 0x564
param_05 equ 0x56A
param_06 equ 0x577
param_07 equ 0x591
param_08 equ 0x59E
param_09 equ 0x5B3
param_09_0A equ 0x5B9
param_0A equ 0x5AA
param_10 equ 0x5C8
param_11 equ 0x5D8
param_11_12 equ 0x5E7
param_11_12_all equ 0x607
param_11_12_def equ 0x5FA
param_11_12_ix equ 0x5FF
param_11_12_iy equ 0x604
param_12 equ 0x5E0
param_13 equ 0x618
param_80 equ 0x637
param_80_seek equ 0x63E
param_81 equ 0x62E
param_comma equ 0x672
param_printRegister equ 0x64D
param_printRegisterA equ 0x66B
param_printRegisterHL equ 0x663
print_a_hex equ 0x2E4
print_char equ 0x2B4
print_clear equ 0x2C7
print_newLine equ 0x2CE
print_str equ 0x2BC
print_str_end equ 0x2C6
print_wait_out equ 0x2D9
read_char equ 0x2F5
var_buffer equ 0x4029
var_buffer_len equ 0x4000
var_curserchar equ 0x4006
@@ -243,23 +244,23 @@ var_cursery equ 0x4003
var_last_char equ 0x4001
var_ps2mem equ 0x4019
var_scratch equ 0x4009
xmodem_ack equ 0x10C1
xmodem_await_conn equ 0xF7A
xmodem_end equ 0x1025
xmodem_err equ 0xFEB
xmodem_init equ 0xF4C
xmodem_int equ 0x102C
xmodem_int_cont equ 0x104B
xmodem_nak equ 0x10CF
xmodem_out equ 0x107D
xmodem_packet equ 0xF85
xmodem_packet_EOT equ 0xFE3
xmodem_packet_get equ 0xF97
xmodem_packet_get_crc equ 0xFD0
xmodem_packet_get_data equ 0xFC1
xmodem_read_wait equ 0x1050
xmodem_read_wait_loop equ 0x105E
xmodem_read_wait_timeout equ 0x107B
xmodem_wait equ 0x10DD
xmodem_wait_1 equ 0x10E3
xmodem_wait_out equ 0x1083
xmodem_ack equ 0x10C4
xmodem_await_conn equ 0xF7D
xmodem_end equ 0x1028
xmodem_err equ 0xFEE
xmodem_init equ 0xF4F
xmodem_int equ 0x102F
xmodem_int_cont equ 0x104E
xmodem_nak equ 0x10D2
xmodem_out equ 0x1080
xmodem_packet equ 0xF88
xmodem_packet_EOT equ 0xFE6
xmodem_packet_get equ 0xF9A
xmodem_packet_get_crc equ 0xFD3
xmodem_packet_get_data equ 0xFC4
xmodem_read_wait equ 0x1053
xmodem_read_wait_loop equ 0x1061
xmodem_read_wait_timeout equ 0x107E
xmodem_wait equ 0x10E0
xmodem_wait_1 equ 0x10E6
xmodem_wait_out equ 0x1086

View File

@@ -0,0 +1,243 @@
;----------------------------------------------------------------
;BIOS Driver for IDE Interface 82C55
;by Dennis Gunia (01/2023)
;----------------------------------------------------------------
;================================================================
; I/O registers
;================================================================
CS_PIA_PA .EQU 0x30 ; D0-7
CS_PIA_PB .EQU 0x31 ; D8-15
CS_PIA_PC .EQU 0x32 ; Controll Lines
CS_PIA_CR .EQU 0x33
;================================================================
; I/O pins
;================================================================
IDE_WR .EQU 00100000b
IDE_RD .EQU 01000000b
IDE_RST .EQU 10000000b
;================================================================
; IDE registers
;================================================================
IDE_REG_DATA .EQU 01000b ;data I/O register (16-bits)
IDE_REG_ERROR .EQU 01001b ;error information register when read; write precompensation register when written.
IDE_REG_SECTOR .EQU 01010b ;Sector counter register
IDE_REG_SSECTOR .EQU 01011b ;Start sector register
IDE_REG_LCYL .EQU 01100b ;Low byte of the cylinder number
IDE_REG_HCYL .EQU 01101b ;High two bits of the cylinder number
IDE_REG_HEAD .EQU 01110b ;Head and device select register
IDE_REG_CMDSTS .EQU 01111b ;command/status register
IDE_REG_ALTSTS .EQU 10110b ;Alternate Status/Digital Output
IDE_REG_DRVADDR .EQU 10111b ;Drive Address
;================================================================
; I/O access functions
;================================================================
;------------------------------------------------------------------------------
; ide_reset
;
; resets drives on bus
;------------------------------------------------------------------------------
ide_reset:
LD A, 10000000b ;CommandByte-A, Mode 0, PA Out, PC Out, PB Out
OUT (CS_PIA_CR), A ;Set Data direction to out
LD A, IDE_RST
OUT (CS_PIA_PC), A ;Reset IDE Device
NOP
XOR A
OUT (CS_PIA_PC), A ;end device reset
RET
;------------------------------------------------------------------------------
; ide_regwrite_8
;
; Sends data to the IDE device
; A contains DATA
; B contains register number
;------------------------------------------------------------------------------
ide_regwrite_8:
PUSH AF ;store date to stack
; Prepare PIA Data Direction
LD A, 10000000b ;CommandByte-A, Mode 0, PA Out, PC Out, PB Out
OUT (CS_PIA_CR), A ;Set Data direction to out
; Write Data out
POP AF
OUT (CS_PIA_PA), A ;Write Data to bit 0-7
;Prepare Address
LD A, B ;Load register address
AND 00011111b ;Mask unused bits
OUT (CS_PIA_PC), A ;Write Data to bit controll lines
OR IDE_WR ;Set Write bit
OUT (CS_PIA_PC), A ;Set write signal
NOP ;delay to wait for processing
LD A, B ;Load register address
AND 00011111b ;Mask unused bits
OUT (CS_PIA_PC), A ;disable write signal
NOP
XOR A ;clear register A
OUT (CS_PIA_PC), A ;clear controll lines
RET
;------------------------------------------------------------------------------
; ide_regread_8
;
; Sends data to the IDE device
; B contains register number
; A returns data
;------------------------------------------------------------------------------
ide_regread_8:
LD A, 10010010b ;CommandByte-A, Mode 0, PA IN, PC Out, PB IN
OUT (CS_PIA_CR), A ;Set Data direction to in
;Prepare Address
LD A, B ;Load register address
AND 00011111b ;Mask unused bits
OUT (CS_PIA_PC), A ;Write Data to bit controll lines
OR IDE_RD ;Set Write bit
OUT (CS_PIA_PC), A ;Write Data to bit controll lines
NOP ;delay to wait for processing
PUSH AF
POP AF
PUSH AF
POP AF
PUSH AF
POP AF
PUSH AF
POP AF
IN A,(CS_PIA_PA) ;read data from ide device to b (because a is used later)
PUSH AF
XOR A ;clear register A
OUT (CS_PIA_PC), A ;clear controll lines
POP AF ;put data in accumulator
RET
;------------------------------------------------------------------------------
; ide_readsector_256
;
; Reads IDE Data
; HL contains destination address
;------------------------------------------------------------------------------
ide_readsector_256:
LD C,255 ;Setup counter for 256 words
ide_readsector_256_waitloop:
LD B, IDE_REG_CMDSTS
CALL ide_regread_8
BIT 0,a ;Error Bit set.
JP NZ, ide_printerror
BIT 3,a ;DRQ Bit set. If set, disk has data
JR Z, ide_readsector_256_waitloop ;If not set, wait
LD A, 10010010b ;CommandByte-A, Mode 0, PA IN, PC Out, PB IN
OUT (CS_PIA_CR), A ;Set Data direction to IN
LD A, IDE_REG_DATA ;CS0 and A=0 -> I/O register
OUT (CS_PIA_PC), A ;set register
OR IDE_RD ;Set Read bit
OUT (CS_PIA_PC), A ;Write Read to bit controll lines
NOP
NOP
NOP
IN A,(CS_PIA_PB) ;Load 16-Bit data to buffer
LD (HL), A
INC HL
IN A,(CS_PIA_PA)
LD (HL), A
INC HL
LD A,C
OR A
JP Z,ide_readsector_256_done
DEC C
JR ide_readsector_256_waitloop
ide_readsector_256_done:
RET
ide_readsector_256_inv:
LD C,255 ;Setup counter for 256 words
ide_readsector_256_inv_waitloop:
LD B, IDE_REG_CMDSTS
CALL ide_regread_8
BIT 0,a ;Error Bit set.
JP NZ, ide_printerror
BIT 3,a ;DRQ Bit set. If set, disk has data
JR Z, ide_readsector_256_inv_waitloop ;If not set, wait
LD A, 10010010b ;CommandByte-A, Mode 0, PA IN, PC Out, PB IN
OUT (CS_PIA_CR), A ;Set Data direction to IN
LD A, IDE_REG_DATA ;CS0 and A=0 -> I/O register
OUT (CS_PIA_PC), A ;set register
OR IDE_RD ;Set Read bit
OUT (CS_PIA_PC), A ;Write Read to bit controll lines
NOP
NOP
NOP
IN A,(CS_PIA_PA) ;Load 16-Bit data to buffer
LD (HL), A
INC HL
IN A,(CS_PIA_PB)
LD (HL), A
INC HL
LD A,C
OR A
JP Z,ide_readsector_256_done
DEC C
JR ide_readsector_256_inv_waitloop
;------------------------------------------------------------------------------
; ide_writesector_256
;
; Writes 512 bytes (256 words) of IDE Data
; HL contains data start address
;------------------------------------------------------------------------------
ide_writesector_256:
RET ;NOT IMPLEMENTED
;================================================================
; utility functions
;================================================================
;------------------------------------------------------------------------------
; ide_printerror
;
; prints IDE error to console
;------------------------------------------------------------------------------
ide_printerror:
LD HL, [str_error_start]
CALL print_str
LD B, IDE_REG_CMDSTS
CALL ide_regread_8
CALL print_a_hex
LD HL, [str_error_start1]
CALL print_str
LD A,(MEM_IDE_DEVICE)
CALL print_a_hex
LD HL, [str_error_start2]
CALL print_str
LD B, IDE_REG_ERROR
CALL ide_regread_8
CALL print_a_hex
LD A,10
CALL print_char
LD A,13
CALL print_char
RET
str_error_start:
db 13,10,"Disk I/O error. Status: 0x",0
str_error_start1:
db " Dev: 0x",0
str_error_start2:
db " Err: 0x",0

View File

@@ -0,0 +1,93 @@
;----------------------------------------------------------------
;BIOS Driver for IDE Access
;by Dennis Gunia (01/2023)
;----------------------------------------------------------------
;================================================================
; IDE commands
;================================================================
IDE_CMD_IDENT .EQU 0xEC ;Identify drive.
IDE_CMD_READSEC .EQU 0x20 ;Read sectors.
;================================================================
; IDE Variables
;================================================================
MEM_IDE_BASE .EQU 0x5000
MEM_IDE_DEVICE .EQU MEM_IDE_BASE ;1Byte: Device ID for IDE-Port, Controller and Master/Slave
MEM_IDE_STATUS .EQU MEM_IDE_BASE + 1 ;1Byte: 0x00 if status is okay
MEM_IDE_BUFFER .EQU MEM_IDE_BASE + 2 ;512Byte: buffer for read/write data
;================================================================
; IDE funtions
;================================================================
;------------------------------------------------------------------------------
; ideif_init_drive
;
; initializes drive
;------------------------------------------------------------------------------
ideif_init_drive:
xor a
ld (MEM_IDE_DEVICE),A ;Set device to 0
ld (MEM_IDE_STATUS),A ;Set status to 0 (OK)
di ;disable interrupt
call ide_reset ;Reset drives on bus
ld hl, [str_dev_waitready]
call print_str ;print waiting message
ld DE, 0x1FFF ;preload timeout counter
ideif_init_drive_loop1:
ld b, IDE_REG_CMDSTS
call ide_regread_8 ;read drive status register
OR A
JR Z, ideif_init_drive_nodrv ;no drive found
BIT 6,A ;Wait for device ready
JR NZ, ideif_init_drive_detected
DEC DE ; decrement timeout
LD A,D
OR E
JR Z, ideif_init_drive_nodrv
JR ideif_init_drive_loop1
ideif_init_drive_nodrv:
ld hl, [str_dev_notfound]
call print_str
RET
ideif_init_drive_detected:
ld hl, [str_dev_ready]
call print_str
LD B, IDE_REG_CMDSTS ;Get drive identification
LD A, IDE_CMD_IDENT
call ide_regwrite_8 ;Write command to drive
LD HL,MEM_IDE_BUFFER ;set read/write buffer start address
call ide_readsector_256 ;read 256 words from device
LD HL,MEM_IDE_BUFFER + 20 ;print device serial
LD B, 20
CALL print_str_fixed
ld hl, [str_dev_ready2]
call print_str
LD HL,MEM_IDE_BUFFER + 54 ;print device name
LD B, 40
CALL print_str_fixed
LD A,10 ;New line
CALL print_char
LD A,13
CALL print_char
RET
;================================================================
; IDE strings
;===============================================================
str_dev_waitready:
db 13,10,"Seek HDD ... ",0
str_dev_ready:
db "Device Found!",13,10,"Serial: ",0
str_dev_ready2:
db " Name: ",0
str_dev_notfound:
db "no drive detected",13,10,0

View File

@@ -0,0 +1,90 @@
;----------------------------------------------------------------
;HEX and ASCII dump function
;by Dennis Gunia (01/2023)
;----------------------------------------------------------------
;------------------------------------------------------------------------------
; dump_pretty
;
; Dumps memory content
; B contains amount of rows
; HL contains start address
; Destroys BC, HL
;------------------------------------------------------------------------------
dump_pretty:
PUSH HL
LD HL,[STR_PD_HEADER] ;Print header
CALL print_str
POP HL
dump_pretty_row:
LD A,B ;Check row counter
OR A
JP Z, dump_pretty_end ;If counter is 0, exit
DEC B ;Decrement row counter by 1
LD C, 16 ;Load column counter
LD A, H ;Print base address
CALL print_a_hex
LD A, L
CALL print_a_hex
LD A, ' '
CALL print_char
dump_pretty_col: ;Loop for column
LD A,(HL) ;Load byte to disply
CALL print_a_hex
LD A, ' '
CALL print_char
INC HL
DEC C ;Decrement column counter
JR NZ, dump_pretty_col ;Loop if not 0
dump_pretty_ascii:
PUSH BC
PUSH HL
LD B,0
LD C,16
SBC HL,BC ;Reset HL by column count
dump_pretty_ascii_loop:
LD A,(HL)
INC HL
CP 32
JP C, dump_pretty_ascii_none ;if less than 32, it is not a char
CP 127
JP NC, dump_pretty_ascii_none ;if greater or equal than 128, it is not a char
call print_char
jr dump_pretty_ascii_cont
dump_pretty_ascii_none:
LD A,'.'
call print_char
dump_pretty_ascii_cont:
DEC C
JP NZ, dump_pretty_ascii_loop
POP HL
POP BC
dump_pretty_nextrow:
LD A,10 ;New line
CALL print_char
LD A,13
CALL print_char
JR dump_pretty_row ;Else next line
dump_pretty_end:
RET
STR_PD_HEADER:
db 13,10,'BASE 0 1 2 3 4 5 6 7 8 9 A B C D E F ASCII',13,10,0
;------------------------------------------------------------------------------
; print_str_fixed
;
; Prints string with fixed length
; B contains length
; HL contains start address
;------------------------------------------------------------------------------
print_str_fixed:
LD A,(HL)
INC HL
CALL print_char
DJNZ print_str_fixed
RET

View File

@@ -1,327 +1,50 @@
.include "extern_symbols.s" ;include monitor symbols.
org 0xB000
CS_PIO_BD .EQU 0xF5
CS_PIO_BC .EQU 0xF7
CS_PIO_AD .EQU 0xF4
CS_PIO_AC .EQU 0xF6
;Testing code
call ideif_init_drive
CS_I2C_S1 .EQU 0xF3
CS_I2C_SX .EQU 0xF2
;testread sector
LD A,1 ;read 1 sector
LD B,IDE_REG_SECTOR
CALL ide_regwrite_8
IIC_RTC equ 11010000b
LD A,1 ;read sector 0
LD B,IDE_REG_SSECTOR
CALL ide_regwrite_8
IIC_INIT:
LD A,0xCF
OUT (CS_PIO_AC), A
LD A,11110101b
OUT (CS_PIO_AC), A
LD A,0 ;read cylinder 0
LD B,IDE_REG_LCYL
CALL ide_regwrite_8
LD A,0
LD B,IDE_REG_HCYL
CALL ide_regwrite_8
LD A,00000000b ; Reset PCF8584 minimum 30 clock cycles
OUT (CS_PIO_AD), A
LD BC,0x1000
CALL PAUSE_LOOP
LD A,0000010b
OUT (CS_PIO_AD), A
LD A,10100000b ;read head 0
LD B,IDE_REG_HEAD
CALL ide_regwrite_8
NOP
NOP
NOP
LD A, 0x80 ;S1 -> Select S0, PIN disabled, ESO = 0, Interrupt disabled, STA, STA, ACK = 0
OUT (CS_I2C_S1),A
CALL SlowAccess
CALL SlowAccess
LD A,0x55 ;S0 -> Loads byte 55H into register S0'; effective own address becomes AAH
OUT (CS_I2C_SX),A
CALL SlowAccess
LD A, 0xA0 ;S1 -> Loads byte A0H into register S1, i.e. next byte will be loaded into the clock control register S2.
OUT (CS_I2C_S1),A
CALL SlowAccess
LD A,0x00 ;Load 18H into S2 register (clock control - 8 MHz, 90 KHz)
OUT (CS_I2C_SX),A
CALL SlowAccess
LD A,0xC1 ;S1 -> loads byte C1H into register S1; register enable
;serial interface, set I 2C-bus into idle mode;
;SDA and SCL are HIGH. The next write or read
;operation will be to/from data transfer register
;S0 if A0 = LOW.;
OUT (CS_I2C_S1),A
CALL SlowAccess
;CALL force_stop
JP PROMPT_BEGIN
LD BC,$0100
CALL PAUSE_LOOP
; Send test message to RTC
LD DE, 0xC000 ; Set I2C Buffer Location
LD A,0x00
LD (DE),A
;call regdump
LD B, IIC_RTC ; Set I2C Address
LD A, 1 ; Set I2C Buffer length
call i2c_send
LD DE, 0xC010
LD B, IIC_RTC
LD A, 7
call i2c_read
LD A,IDE_CMD_READSEC ;send read command
LD B,IDE_REG_CMDSTS
CALL ide_regwrite_8
LD HL,MEM_IDE_BUFFER ;set read/write buffer start address
call ide_readsector_256_inv ;read 256 words from device
LD HL,MEM_IDE_BUFFER
LD B,32
call dump_pretty
JP PROMPT_BEGIN
;CLK_ENABLE:
; LD DE, 0xC000 ; Set I2C Buffer Location
; LD A,0x00
; LD (0xC000),A
; LD (0xC001),A
; ;call regdump
;
; LD B, IIC_RTC ; Set I2C Address
; LD A, 2 ; Set I2C Buffer length
; call i2c_send
; JP PROMPT_BEGIN
;------------------------------------------------------------------------------
; i2c_send
;
; Sends data over the i2c bus
; A contains BYTE COUNTER
; B contains ADDRESS
; DE contains location of Data Buffer
;------------------------------------------------------------------------------
i2c_send:
; CALL PRINTINLINE;
; defb "SEND A",10,13,0
PUSH BC
.include "kdrv_ide8255.s" ;include ide interface driver.
.include "kdrv_ideif.s" ;include ide driver.
.include "prettydump.s" ;include monitor symbols.
delay_small:
PUSH AF
CALL i2c_bus_rdy
; CALL PRINTINLINE
; defb "SEND START",10,13,0
LD A,B ;Load 'slave address' into S0 register:
OUT (CS_I2C_SX),A
CALL SlowAccess
LD A, 0xC5 ;Load C5H into S1. 'C5H' = PCF8584 generates
;the 'START' condition and clocks out the slave
;address and the clock pulse for slave acknowledgement.
OUT (CS_I2C_S1),A
POP AF
LD C,A
INC C
i2c_send_1: ; LOOP 1 : Wait for bus ready
IN A,(CS_I2C_S1) ; Read byte from S1 register
BIT 7,A ; Is bus free? (S1 ~BB=1?)
JR NZ,i2c_send_1 ; No - loop
BIT 4,A ; slave acknowledged? (LRB = 0?)
JR NZ, i2c_send_stop ; if not, cancel transmission
LD A,(DE) ; Load next byte from buffer
INC DE
DEC C
JR Z, i2c_send_stop ; if counter = 0, exit loop
OUT (CS_I2C_SX),A ; Send byte
JR i2c_send_1 ; if counter > 0, loop again
i2c_send_stop:
LD A, 0xC3 ;STOP
OUT (CS_I2C_S1),A
CALL SlowAccess
POP BC
RET
;------------------------------------------------------------------------------
; i2c_read
;
; Sends data over the i2c bus
; A contains BYTE COUNTER
; B contains ADDRESS
; DE contains location of Data Buffer
;------------------------------------------------------------------------------
i2c_read:
PUSH DE
PUSH BC
PUSH AF
LD A,B ;Load 'slave address' into S0 register:
OR 0x01 ;Set RW Bit for read operation
OUT (CS_I2C_SX),A
CALL SlowAccess
CALL i2c_bus_rdy ; Is bus ready
LD A, 0xC5 ;Load C5H into S1. 'C5H' = PCF8584 generates
;the 'START' condition and clocks out the slave
;address and the clock pulse for slave acknowledgement.
OUT (CS_I2C_S1),A
;Setup counter
POP AF
LD C,A ; Load BYTE COUNTER into C
INC C ; Offset C by 1
i2c_read_1: ;Wait for PIN = 0
IN A,(CS_I2C_S1) ; Read byte from S1 register
BIT 7,A ; S1 PIN=1?
JR NZ,i2c_read_1 ; No - loop
BIT 3,A ; S1 LRB=0? slave ACK?
JR NZ, i2c_read_error ; No ACK -> an error has occured
DEC C
LD A, C
DEC A ;If n = m 1?
JR Z, i2c_read_last
IN A,(CS_I2C_SX)
LD (DE),A
INC DE
JR i2c_read_1
i2c_read_last: ;read last byte
LD A, 0x40
OUT (CS_I2C_S1),A
CALL SlowAccess
IN A,(CS_I2C_SX) ;receives the final data byte. Neg. ACK is also sent.
LD (DE),A
INC DE
i2c_read_last_1:
IN A,(CS_I2C_S1) ; Read byte from S1 register
BIT 7,A ; S1 PIN=1?
JR NZ,i2c_read_last_1 ; No - loop
i2c_read_error:
NOP
i2c_read_stop:
LD A, 0xC3
OUT (CS_I2C_S1),A
CALL SlowAccess
IN A,(CS_I2C_SX) ;transfers the final data byte from the
;data buffer to accumulator.
CALL SlowAccess
LD (DE),A
POP BC
POP DE
RET
i2c_stop_force:
;------------------------------------------------------------------------------
; i2c_rdy
;
; Waits until the PCF8584 signals a byte transmission/reception is complete.
;------------------------------------------------------------------------------
i2c_rdy:
PUSH AF
i2c_rlp:
IN A,(CS_I2C_S1) ; Read byte from S1 register
BIT 7,A ; Is Tx/Rx complete? (S1 PIN=0?)
call print_a_hex
JR NZ,i2c_rlp ; No - loop
i2crlpex:
POP AF
RET
;------------------------------------------------------------------------------
; i2c_bus_rdy
;
; Waits until the I2C bus is free before RETurning
;------------------------------------------------------------------------------
i2c_bus_rdy:
PUSH AF
i2c_blp:
IN A,(CS_I2C_S1) ; Read byte from S1 register
PUSH AF
call print_a_hex
POP AF
BIT 0,A ; Is bus free? (S1 ~BB=1?)
JR Z,i2c_blp ; No - loop
i2cblpex:
POP AF
RET
;------------------------------------------------------------------------------
; PAUSE_LOOP
;
; Timer function
;
; 16-bit (BC) decrement counter, performing 4xNEG loop until BC
; reaches zero.
;
; 61 T-states in loop = 15.25uS per loop @ 4 MHz - near enough
; a second delay for 65,535 iterations.
;
; Set iteration count in BC before calling this function.
; Destroys: BC
;------------------------------------------------------------------------------
PAUSE_LOOP:
PUSH AF ; 11 T-states
pau_lp:
;NEG ; 8 T-states
;NEG ; 8 T-states
;NEG ; 8 T-states
;NEG ; 8 T-states
PUSH BC ; 11 T-states
POP BC ; 10 T-states
PUSH BC ; 11 T-states
POP BC ; 10 T-states
DEC BC ; 6 T-states
LD A,C ; 9 T-states
OR B ; 4 T-states
JP NZ,pau_lp ; 10 T-states
POP AF ; 10 T-states
RET ; Pause complete, RETurn
;------------------------------------------------------------------------------
; PRINTINLINE
;
; String output function
;
; Prints in-line data (bytes immediately following the PRINTINLINE call)
; until a string terminator is encountered (0 - null char).
;------------------------------------------------------------------------------
PRINTINLINE:
EX (SP),HL ; PUSH HL and put RET ADDress into HL
PUSH AF
PUSH BC
nxtILC:
LD A,(HL)
CP 0
JR Z,endPrint
CALL print_char
INC HL
JR nxtILC
endPrint:
INC HL ; Get past "null" terminator
POP BC
POP AF
EX (SP),HL ; PUSH new RET ADDress on stack and restore HL
RET
SlowAccess:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
;.include "regdump.s"
force_stop:
IN A,(CS_I2C_S1)
BIT 0, A
RET NZ
LD A, 11000011b
OUT (CS_I2C_S1),A
NOP
NOP
JR force_stop

View File

@@ -0,0 +1,327 @@
.include "extern_symbols.s" ;include monitor symbols.
org 0xB000
CS_PIO_BD .EQU 0xF5
CS_PIO_BC .EQU 0xF7
CS_PIO_AD .EQU 0xF4
CS_PIO_AC .EQU 0xF6
CS_I2C_S1 .EQU 0xF3
CS_I2C_SX .EQU 0xF2
IIC_RTC equ 11010000b
IIC_INIT:
LD A,0xCF
OUT (CS_PIO_AC), A
LD A,11110101b
OUT (CS_PIO_AC), A
LD A,00000000b ; Reset PCF8584 minimum 30 clock cycles
OUT (CS_PIO_AD), A
LD BC,0x1000
CALL PAUSE_LOOP
LD A,0000010b
OUT (CS_PIO_AD), A
NOP
NOP
NOP
LD A, 0x80 ;S1 -> Select S0, PIN disabled, ESO = 0, Interrupt disabled, STA, STA, ACK = 0
OUT (CS_I2C_S1),A
CALL SlowAccess
CALL SlowAccess
LD A,0x55 ;S0 -> Loads byte 55H into register S0'; effective own address becomes AAH
OUT (CS_I2C_SX),A
CALL SlowAccess
LD A, 0xA0 ;S1 -> Loads byte A0H into register S1, i.e. next byte will be loaded into the clock control register S2.
OUT (CS_I2C_S1),A
CALL SlowAccess
LD A,0x00 ;Load 18H into S2 register (clock control - 8 MHz, 90 KHz)
OUT (CS_I2C_SX),A
CALL SlowAccess
LD A,0xC1 ;S1 -> loads byte C1H into register S1; register enable
;serial interface, set I 2C-bus into idle mode;
;SDA and SCL are HIGH. The next write or read
;operation will be to/from data transfer register
;S0 if A0 = LOW.;
OUT (CS_I2C_S1),A
CALL SlowAccess
;CALL force_stop
JP PROMPT_BEGIN
LD BC,$0100
CALL PAUSE_LOOP
; Send test message to RTC
LD DE, 0xC000 ; Set I2C Buffer Location
LD A,0x00
LD (DE),A
;call regdump
LD B, IIC_RTC ; Set I2C Address
LD A, 1 ; Set I2C Buffer length
call i2c_send
LD DE, 0xC010
LD B, IIC_RTC
LD A, 7
call i2c_read
JP PROMPT_BEGIN
;CLK_ENABLE:
; LD DE, 0xC000 ; Set I2C Buffer Location
; LD A,0x00
; LD (0xC000),A
; LD (0xC001),A
; ;call regdump
;
; LD B, IIC_RTC ; Set I2C Address
; LD A, 2 ; Set I2C Buffer length
; call i2c_send
; JP PROMPT_BEGIN
;------------------------------------------------------------------------------
; i2c_send
;
; Sends data over the i2c bus
; A contains BYTE COUNTER
; B contains ADDRESS
; DE contains location of Data Buffer
;------------------------------------------------------------------------------
i2c_send:
; CALL PRINTINLINE;
; defb "SEND A",10,13,0
PUSH BC
PUSH AF
CALL i2c_bus_rdy
; CALL PRINTINLINE
; defb "SEND START",10,13,0
LD A,B ;Load 'slave address' into S0 register:
OUT (CS_I2C_SX),A
CALL SlowAccess
LD A, 0xC5 ;Load C5H into S1. 'C5H' = PCF8584 generates
;the 'START' condition and clocks out the slave
;address and the clock pulse for slave acknowledgement.
OUT (CS_I2C_S1),A
POP AF
LD C,A
INC C
i2c_send_1: ; LOOP 1 : Wait for bus ready
IN A,(CS_I2C_S1) ; Read byte from S1 register
BIT 7,A ; Is bus free? (S1 ~BB=1?)
JR NZ,i2c_send_1 ; No - loop
BIT 4,A ; slave acknowledged? (LRB = 0?)
JR NZ, i2c_send_stop ; if not, cancel transmission
LD A,(DE) ; Load next byte from buffer
INC DE
DEC C
JR Z, i2c_send_stop ; if counter = 0, exit loop
OUT (CS_I2C_SX),A ; Send byte
JR i2c_send_1 ; if counter > 0, loop again
i2c_send_stop:
LD A, 0xC3 ;STOP
OUT (CS_I2C_S1),A
CALL SlowAccess
POP BC
RET
;------------------------------------------------------------------------------
; i2c_read
;
; Sends data over the i2c bus
; A contains BYTE COUNTER
; B contains ADDRESS
; DE contains location of Data Buffer
;------------------------------------------------------------------------------
i2c_read:
PUSH DE
PUSH BC
PUSH AF
LD A,B ;Load 'slave address' into S0 register:
OR 0x01 ;Set RW Bit for read operation
OUT (CS_I2C_SX),A
CALL SlowAccess
CALL i2c_bus_rdy ; Is bus ready
LD A, 0xC5 ;Load C5H into S1. 'C5H' = PCF8584 generates
;the 'START' condition and clocks out the slave
;address and the clock pulse for slave acknowledgement.
OUT (CS_I2C_S1),A
;Setup counter
POP AF
LD C,A ; Load BYTE COUNTER into C
INC C ; Offset C by 1
i2c_read_1: ;Wait for PIN = 0
IN A,(CS_I2C_S1) ; Read byte from S1 register
BIT 7,A ; S1 PIN=1?
JR NZ,i2c_read_1 ; No - loop
BIT 3,A ; S1 LRB=0? slave ACK?
JR NZ, i2c_read_error ; No ACK -> an error has occured
DEC C
LD A, C
DEC A ;If n = m 1?
JR Z, i2c_read_last
IN A,(CS_I2C_SX)
LD (DE),A
INC DE
JR i2c_read_1
i2c_read_last: ;read last byte
LD A, 0x40
OUT (CS_I2C_S1),A
CALL SlowAccess
IN A,(CS_I2C_SX) ;receives the final data byte. Neg. ACK is also sent.
LD (DE),A
INC DE
i2c_read_last_1:
IN A,(CS_I2C_S1) ; Read byte from S1 register
BIT 7,A ; S1 PIN=1?
JR NZ,i2c_read_last_1 ; No - loop
i2c_read_error:
NOP
i2c_read_stop:
LD A, 0xC3
OUT (CS_I2C_S1),A
CALL SlowAccess
IN A,(CS_I2C_SX) ;transfers the final data byte from the
;data buffer to accumulator.
CALL SlowAccess
LD (DE),A
POP BC
POP DE
RET
i2c_stop_force:
;------------------------------------------------------------------------------
; i2c_rdy
;
; Waits until the PCF8584 signals a byte transmission/reception is complete.
;------------------------------------------------------------------------------
i2c_rdy:
PUSH AF
i2c_rlp:
IN A,(CS_I2C_S1) ; Read byte from S1 register
BIT 7,A ; Is Tx/Rx complete? (S1 PIN=0?)
call print_a_hex
JR NZ,i2c_rlp ; No - loop
i2crlpex:
POP AF
RET
;------------------------------------------------------------------------------
; i2c_bus_rdy
;
; Waits until the I2C bus is free before RETurning
;------------------------------------------------------------------------------
i2c_bus_rdy:
PUSH AF
i2c_blp:
IN A,(CS_I2C_S1) ; Read byte from S1 register
PUSH AF
call print_a_hex
POP AF
BIT 0,A ; Is bus free? (S1 ~BB=1?)
JR Z,i2c_blp ; No - loop
i2cblpex:
POP AF
RET
;------------------------------------------------------------------------------
; PAUSE_LOOP
;
; Timer function
;
; 16-bit (BC) decrement counter, performing 4xNEG loop until BC
; reaches zero.
;
; 61 T-states in loop = 15.25uS per loop @ 4 MHz - near enough
; a second delay for 65,535 iterations.
;
; Set iteration count in BC before calling this function.
; Destroys: BC
;------------------------------------------------------------------------------
PAUSE_LOOP:
PUSH AF ; 11 T-states
pau_lp:
;NEG ; 8 T-states
;NEG ; 8 T-states
;NEG ; 8 T-states
;NEG ; 8 T-states
PUSH BC ; 11 T-states
POP BC ; 10 T-states
PUSH BC ; 11 T-states
POP BC ; 10 T-states
DEC BC ; 6 T-states
LD A,C ; 9 T-states
OR B ; 4 T-states
JP NZ,pau_lp ; 10 T-states
POP AF ; 10 T-states
RET ; Pause complete, RETurn
;------------------------------------------------------------------------------
; PRINTINLINE
;
; String output function
;
; Prints in-line data (bytes immediately following the PRINTINLINE call)
; until a string terminator is encountered (0 - null char).
;------------------------------------------------------------------------------
PRINTINLINE:
EX (SP),HL ; PUSH HL and put RET ADDress into HL
PUSH AF
PUSH BC
nxtILC:
LD A,(HL)
CP 0
JR Z,endPrint
CALL print_char
INC HL
JR nxtILC
endPrint:
INC HL ; Get past "null" terminator
POP BC
POP AF
EX (SP),HL ; PUSH new RET ADDress on stack and restore HL
RET
SlowAccess:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
;.include "regdump.s"
force_stop:
IN A,(CS_I2C_S1)
BIT 0, A
RET NZ
LD A, 11000011b
OUT (CS_I2C_S1),A
NOP
NOP
JR force_stop

View File

@@ -1,20 +1,43 @@
:10B000003ECFD3F63EF5D3F63E00D3F4010010CD8B
:10B01000F6B03E02D3F40000003E80D3F3CD16B16B
:10B02000CD16B13E55D3F2CD16B13EA0D3F3CD1619
:10B03000B13E00D3F2CD16B13EC1D3F3CD16B1C3AC
:10B040009900010001CDF6B01100C03E001206D0FB
:10B050003E01CD62B01110C006D03E07CD90B0C306
:10B060009900C5F5CDE8B078D3F2CD16B13EC5D381
:10B07000F3F14F0CDBF3CB7F20FACB6720091A13D7
:10B080000D2804D3F218ED3EC3D3F3CD16B1C1C9D8
:10B09000D5C5F578F601D3F2CD16B1CDE8B03EC5F1
:10B0A000D3F3F14F0CDBF3CB7F20FACB5F201C0DE9
:10B0B000793D2806DBF2121318EB3E40D3F3CD1690
:10B0C000B1DBF21213DBF3CB7F20FA003EC3D3F3E4
:10B0D000CD16B1DBF2CD16B112C1D1C9F5DBF3CB80
:10B0E0007FCDE70220F7F1C9F5DBF3F5CDE702F1FB
:10B0F000CB4728F5F1C9F5C5C1C5C10B79B0C2F779
:10B10000B0F1C9E3F5C57EFE002806CDB7022318CD
:10B11000F523C1F1E3C90000000000000000C9DB15
:0CB12000F3CB47C03EC3D3F3000018F38C
:10B00000CD47B13E01060ACD4BB03E01060BCD4BFC
:10B01000B03E00060CCD4BB03E00060DCD4BB03E11
:10B02000A0060ECD4BB03E20060FCD4BB0210250F6
:10B03000CDB5B02102500620CDEEB1C396003E80C2
:10B04000D3333E80D33200AFD332C9F53E80D33301
:10B05000F1D33078E61FD332F620D3320078E61FE2
:10B06000D33200AFD332C93E92D33378E61FD33206
:10B07000F640D33200F5F1F5F1F5F1F5F1DB30F5FD
:10B08000AFD332F1C90EFF060FCD67B0CB47C2E593
:10B09000B0CB5F28F23E92D3333E08D332F640D392
:10B0A00032000000DB317723DB30772379B7CAB475
:10B0B000B00D18D3C90EFF060FCD67B0CB47C2E560
:10B0C000B0CB5F28F23E92D3333E08D332F640D362
:10B0D00032000000DB307723DB31772379B7CAB445
:10B0E000B00D18D3C92118B1CDBC02060FCD67B081
:10B0F000CDE4022135B1CDBC023A0050CDE40221AD
:10B100003EB1CDBC020609CD67B0CDE4023E0ACD0A
:10B11000B4023E0DCDB402C90D0A4469736B2049D7
:10B120002F4F206572726F722E2053746174757385
:10B130003A20307800204465763A20307800204567
:10B1400072723A20307800AF320050320150F3CDA5
:10B150003EB021A9B1CDBC0211FF1F060FCD67B0D3
:10B16000B7280BCB77200E1B7AB3280218ED21DA13
:10B17000B1CDBC02C921B9B1CDBC02060F3EECCDA8
:10B180004BB0210250CD85B02116500614CD88B2A7
:10B1900021D1B1CDBC022138500628CD88B23E0A5B
:10B1A000CDB4023E0DCDB402C90D0A5365656B20C6
:10B1B000484444202E2E2E20004465766963652085
:10B1C000466F756E64210D0A53657269616C3A2091
:10B1D0000020204E616D653A20006E6F2064726918
:10B1E00076652064657465637465640D0A00E52105
:10B1F00049B2CDBC02E178B7CA48B2050E107CCD89
:10B20000E4027DCDE4023E20CDB4027ECDE4023ED8
:10B2100020CDB402230D20F3C5E506000E10ED424B
:10B220007E23FE20DA31B2FE7FD231B2CDB40218D5
:10B23000053E2ECDB4020DC220B2E1C13E0ACDB40E
:10B24000023E0DCDB40218AEC90D0A42415345204D
:10B25000302020312020322020332020342020357F
:10B26000202036202037202038202039202041205F
:10B27000204220204320204420204520204620201A
:10B2800041534349490D0A007E23CDB40210F9C948
:05B29000F5F1F5F1C924
:00000001FF

File diff suppressed because it is too large Load Diff

View File

@@ -1,19 +1,42 @@
!B000 3E CF D3 F6 3E F5 D3 F6 3E 00 D3 F4 01 00 10 CD
!B010 F6 B0 3E 02 D3 F4 00 00 00 3E 80 D3 F3 CD 16 B1
!B020 CD 16 B1 3E 55 D3 F2 CD 16 B1 3E A0 D3 F3 CD 16
!B030 B1 3E 00 D3 F2 CD 16 B1 3E C1 D3 F3 CD 16 B1 C3
!B040 99 00 01 00 01 CD F6 B0 11 00 C0 3E 00 12 06 D0
!B050 3E 01 CD 62 B0 11 10 C0 06 D0 3E 07 CD 90 B0 C3
!B060 99 00 C5 F5 CD E8 B0 78 D3 F2 CD 16 B1 3E C5 D3
!B070 F3 F1 4F 0C DB F3 CB 7F 20 FA CB 67 20 09 1A 13
!B080 0D 28 04 D3 F2 18 ED 3E C3 D3 F3 CD 16 B1 C1 C9
!B090 D5 C5 F5 78 F6 01 D3 F2 CD 16 B1 CD E8 B0 3E C5
!B0A0 D3 F3 F1 4F 0C DB F3 CB 7F 20 FA CB 5F 20 1C 0D
!B0B0 79 3D 28 06 DB F2 12 13 18 EB 3E 40 D3 F3 CD 16
!B0C0 B1 DB F2 12 13 DB F3 CB 7F 20 FA 00 3E C3 D3 F3
!B0D0 CD 16 B1 DB F2 CD 16 B1 12 C1 D1 C9 F5 DB F3 CB
!B0E0 7F CD E7 02 20 F7 F1 C9 F5 DB F3 F5 CD E7 02 F1
!B0F0 CB 47 28 F5 F1 C9 F5 C5 C1 C5 C1 0B 79 B0 C2 F7
!B100 B0 F1 C9 E3 F5 C5 7E FE 00 28 06 CD B7 02 23 18
!B110 F5 23 C1 F1 E3 C9 00 00 00 00 00 00 00 00 C9 DB
!B120 F3 CB 47 C0 3E C3 D3 F3 00 00 18 F3
!B000 CD 47 B1 3E 01 06 0A CD 4B B0 3E 01 06 0B CD 4B
!B010 B0 3E 00 06 0C CD 4B B0 3E 00 06 0D CD 4B B0 3E
!B020 A0 06 0E CD 4B B0 3E 20 06 0F CD 4B B0 21 02 50
!B030 CD B5 B0 21 02 50 06 20 CD EE B1 C3 96 00 3E 80
!B040 D3 33 3E 80 D3 32 00 AF D3 32 C9 F5 3E 80 D3 33
!B050 F1 D3 30 78 E6 1F D3 32 F6 20 D3 32 00 78 E6 1F
!B060 D3 32 00 AF D3 32 C9 3E 92 D3 33 78 E6 1F D3 32
!B070 F6 40 D3 32 00 F5 F1 F5 F1 F5 F1 F5 F1 DB 30 F5
!B080 AF D3 32 F1 C9 0E FF 06 0F CD 67 B0 CB 47 C2 E5
!B090 B0 CB 5F 28 F2 3E 92 D3 33 3E 08 D3 32 F6 40 D3
!B0A0 32 00 00 00 DB 31 77 23 DB 30 77 23 79 B7 CA B4
!B0B0 B0 0D 18 D3 C9 0E FF 06 0F CD 67 B0 CB 47 C2 E5
!B0C0 B0 CB 5F 28 F2 3E 92 D3 33 3E 08 D3 32 F6 40 D3
!B0D0 32 00 00 00 DB 30 77 23 DB 31 77 23 79 B7 CA B4
!B0E0 B0 0D 18 D3 C9 21 18 B1 CD BC 02 06 0F CD 67 B0
!B0F0 CD E4 02 21 35 B1 CD BC 02 3A 00 50 CD E4 02 21
!B100 3E B1 CD BC 02 06 09 CD 67 B0 CD E4 02 3E 0A CD
!B110 B4 02 3E 0D CD B4 02 C9 0D 0A 44 69 73 6B 20 49
!B120 2F 4F 20 65 72 72 6F 72 2E 20 53 74 61 74 75 73
!B130 3A 20 30 78 00 20 44 65 76 3A 20 30 78 00 20 45
!B140 72 72 3A 20 30 78 00 AF 32 00 50 32 01 50 F3 CD
!B150 3E B0 21 A9 B1 CD BC 02 11 FF 1F 06 0F CD 67 B0
!B160 B7 28 0B CB 77 20 0E 1B 7A B3 28 02 18 ED 21 DA
!B170 B1 CD BC 02 C9 21 B9 B1 CD BC 02 06 0F 3E EC CD
!B180 4B B0 21 02 50 CD 85 B0 21 16 50 06 14 CD 88 B2
!B190 21 D1 B1 CD BC 02 21 38 50 06 28 CD 88 B2 3E 0A
!B1A0 CD B4 02 3E 0D CD B4 02 C9 0D 0A 53 65 65 6B 20
!B1B0 48 44 44 20 2E 2E 2E 20 00 44 65 76 69 63 65 20
!B1C0 46 6F 75 6E 64 21 0D 0A 53 65 72 69 61 6C 3A 20
!B1D0 00 20 20 4E 61 6D 65 3A 20 00 6E 6F 20 64 72 69
!B1E0 76 65 20 64 65 74 65 63 74 65 64 0D 0A 00 E5 21
!B1F0 49 B2 CD BC 02 E1 78 B7 CA 48 B2 05 0E 10 7C CD
!B200 E4 02 7D CD E4 02 3E 20 CD B4 02 7E CD E4 02 3E
!B210 20 CD B4 02 23 0D 20 F3 C5 E5 06 00 0E 10 ED 42
!B220 7E 23 FE 20 DA 31 B2 FE 7F D2 31 B2 CD B4 02 18
!B230 05 3E 2E CD B4 02 0D C2 20 B2 E1 C1 3E 0A CD B4
!B240 02 3E 0D CD B4 02 18 AE C9 0D 0A 42 41 53 45 20
!B250 30 20 20 31 20 20 32 20 20 33 20 20 34 20 20 35
!B260 20 20 36 20 20 37 20 20 38 20 20 39 20 20 41 20
!B270 20 42 20 20 43 20 20 44 20 20 45 20 20 46 20 20
!B280 41 53 43 49 49 0D 0A 00 7E 23 CD B4 02 10 F9 C9
!B290 F5 F1 F5 F1 C9

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,25 @@

CUPL(WM) 5.0a Serial# 60008009
Device g16v8as Library DLIB-h-40-2
Created Sun Jan 15 20:24:25 2023
Name XXXXX
Partno XXXXX
Revision XX
Date XX/XX/XX
Designer XXXXX
Company XXXXX
Assembly XXXXX
Location XXXXX
*QP20
*QF2194
*G0
*F0
*L01024 11101011111111111111111111111011
*L01792 11101111111111111111111110111111
*L02048 00100001010110000101100001011000
*L02080 01011000010110000000000000000000
*L02112 00000000110101101111111111111111
*L02144 11111111111111111111111111111111
*L02176 111111111111111110
*C1110
*84C9

Binary file not shown.

View File

@@ -0,0 +1,175 @@
{COMPONENT Z:\HOME\DENNISGUNIA\PROJECTS\Z8C-HOMEBREW-COMPUTER\PLDS\Z8C-IDE-BOARD-U8\Z8C-MAINBOARD.SYM
{ENVIRONMENT
{PDIFvrev 3.00}
{Program "CUPL(WM) Version 5.0a"}
{DBtype "Schematic"}
{DBvrev 1.01}
{DBtime "Sun Jan 15 20:24:25 2023 "}
{DBunit "MIL"}
{DBgrid 10}
{Lyrstr "WIRES" 1 "BUS" 1 "GATE" 2 "IEEE" 2 "PINFUN" 3 "PINNUM" 1
"PINNAM" 6 "PINCON" 4 "REFDES" 2 "ATTR" 6 "SDOT" 1
"DEVICE" 5 "OUTLIN" 5 "ATTR2" 6 "NOTES" 6 "NETNAM" 4
"CMPNAM" 5 "BORDER" 5}
}
{USER
{VIEW
{Mode SYMB}
{Nlst OPEN}
{Vw 0 0 2}
{Lv 12 2 2 2 0 0 2 2 2 2 0 0 2 1 2 0 0 0 0}
{Gs 10 10}
}
}
{DISPLAY
[Ly "PINNUM"]
[Ls "SOLID"][Wd 0]
[Ts 15][Tj "LC"][Tr 0][Tm "N"]
}
{SYMBOL
{PIN_DEF
[Ly "PINCON"]
{P CS {Pt "INPUT"}{Lq 0}{Ploc 100 240}}
{P A1 {Pt "INPUT"}{Lq 0}{Ploc 100 220}}
{P A2 {Pt "INPUT"}{Lq 0}{Ploc 100 200}}
{P A3 {Pt "INPUT"}{Lq 0}{Ploc 100 180}}
{P A4 {Pt "INPUT"}{Lq 0}{Ploc 100 160}}
{P RD {Pt "INPUT"}{Lq 0}{Ploc 100 140}}
{P IOREQ {Pt "INPUT"}{Lq 0}{Ploc 100 120}}
{P WR {Pt "INPUT"}{Lq 0}{Ploc 100 100}}
{P CS_LATCH {Pt "INPUT"}{Lq 0}{Ploc 100 80}}
{P CS_FDC {Pt "INPUT"}{Lq 0}{Ploc 100 60}}
{P CLK2 {Pt "INPUT"}{Lq 0}{Ploc 100 40}}
{P CLK4 {Pt "INPUT"}{Lq 0}{Ploc 100 20}}
{P BUSDIR {Pt "I/O"}{Lq 0}{Ploc 360 20}}
{P CS_IDE {Pt "I/O"}{Lq 0}{Ploc 360 40}}
{P BUS_WAIT {Pt "I/O"}{Lq 0}{Ploc 360 60}}
}
{PKG
[Ly "REFDES"]
[Ts 25][Tj "CB"][Tr 0][Tm "N"]
{Rdl 230 270}
[Ly "PINNUM"]
[Ts 15][Tj "RC"]
{Pnl 120 250}
{Pnl 120 230}
{Pnl 120 210}
{Pnl 120 190}
{Pnl 120 170}
{Pnl 120 150}
{Pnl 120 130}
{Pnl 120 110}
{Pnl 120 90}
{Pnl 120 70}
{Pnl 120 50}
{Pnl 120 30}
[Ts 15][Tj "LC"]
{Pnl 340 30}
{Pnl 340 50}
{Pnl 340 70}
{Sd A 1 2 3 4 5 8 9 11 13 14 18 19 12 15 17}
}
{PIC
[Ly "GATE"]
[Ts 15][Tj "LC"][Tr 0][Tm "N"]
{R 130 260 330 0}
{L 130 240 100 240}
{L 130 220 100 220}
{L 130 200 100 200}
{L 130 180 100 180}
{L 130 160 100 160}
{L 130 140 100 140}
{L 130 120 100 120}
{L 130 100 100 100}
{L 130 80 100 80}
{L 130 60 100 60}
{L 130 40 100 40}
{L 130 20 100 20}
{L 330 20 360 20}
{L 330 40 360 40}
{L 330 60 360 60}
[Ly "PINNAM"]
[Tj "LC"]
{T "CS" 140 240}
{T "A1" 140 220}
{T "A2" 140 200}
{T "A3" 140 180}
{T "A4" 140 160}
{T "RD" 140 140}
{T "IOREQ" 140 120}
{T "WR" 140 100}
{T "CS_LATCH" 140 80}
{T "CS_FDC" 140 60}
{T "CLK2" 140 40}
{T "CLK4" 140 20}
[Tj "RC"]
{T "BUSDIR" 320 20}
{T "CS_IDE" 320 40}
{T "BUS_WAIT" 320 60}
[Ly "DEVICE"]
[Tj "CT"]
{T "G16V8AS" 230 -10}
}
{ATR
{IN
{Org 100 20}
{Ty 255}
}
{EX
[Ly "ATTR2"]
[Ts 12][Tj "CT"][Tr 0][Tm "N"]
{At PLD Z:\HOME\DENNISGUNIA\PROJECTS\Z8C-HOMEBREW-COMPUTER\PLDS\Z8C-IDE-BOARD-U8\Z8C-MAINBOARD 230 260}
}
}
}
{DETAIL
{ANNOTATE
}
{NET_DEF
{N CS
}
{N A1
}
{N A2
}
{N A3
}
{N A4
}
{N RD
}
{N IOREQ
}
{N WR
}
{N CS_LATCH
}
{N CS_FDC
}
{N CLK2
}
{N CLK4
}
{N BUSDIR
}
{N CS_IDE
}
{N BUS_WAIT
}
}
{SUBCOMP
}
}
}

View File

@@ -0,0 +1,32 @@
%SIGNAL
PIN 2 = A1
PIN 3 = A2
PIN 4 = A3
PIN 5 = A4
PIN 12 = BUSDIR
PIN 17 = BUS_WAIT
PIN 18 = CLK2
PIN 19 = CLK4
PIN 1 = CS
PIN 14 = CS_FDC
PIN 15 = CS_IDE
PIN 13 = CS_LATCH
PIN 9 = IOREQ
PIN 8 = RD
PIN 11 = WR
%END
%FIELD
%END
%EQUATION
BUSDIR =>
!CS & !RD
BUS_WAIT =>
0
CS_IDE =>
!A2 & !CS & !IOREQ
%END

View File

@@ -0,0 +1,32 @@
Name XXXXX;
Partno XXXXX;
Date XX/XX/XX;
Revision XX;
Designer XXXXX;
Company XXXXX;
Assembly XXXXX;
Location XXXXX;
DEVICE g16v8a;
Pin 1 = CS;
Pin 2 = A1;
Pin 3 = A2;
Pin 4 = A3;
Pin 5 = A4;
Pin 9 = IOREQ;
Pin 11 = WR;
Pin 8 = RD;
Pin 13 = CS_LATCH;
Pin 14 = CS_FDC;
Pin 15 = CS_IDE;
Pin 12 = BUSDIR;
Pin 17 = BUS_WAIT;
Pin 18 = CLK2;
Pin 19 = CLK4;
CS_IDE = !(!IOREQ & !CS & !A2 );
BUSDIR = !CS & !RD;
BUS_WAIT = 'b'0;

View File

@@ -0,0 +1,28 @@

CUPL(WM) 5.0a Serial# 60008009
Device g16v8as Library DLIB-h-40-2
Created Thu Oct 20 08:10:08 2022
Name XXXXX
Partno XXXXX
Revision XX
Date XX/XX/XX
Designer XXXXX
Company XXXXX
Assembly XXXXX
Location XXXXX
*QP20
*QF2194
*G0
*F0
*L00000 10011011101110111011101110111010
*L00512 11110111101110111011101110111011
*L00768 11111011011110111011101110111011
*L01024 10101011101110111011101110101011
*L02048 00000000010110000101100001011000
*L02080 01011000010110000000000000000000
*L02112 00000000010001111111111111111111
*L02144 11111111111111111111111111111111
*L02176 111111111111111110
*C16AE
*P 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
*

View File

@@ -305,7 +305,6 @@
(net 215 "Net-(RN1-Pad7)")
(net 216 "unconnected-(U8-Pad6)")
(net 217 "unconnected-(U8-Pad7)")
(net 218 "unconnected-(U8-Pad8)")
(footprint "Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P2.54mm_Vertical" (layer "F.Cu")
(tedit 5AE5139B) (tstamp 02afcc90-60f8-46f6-9ded-5f6f43e29a84)
@@ -2196,7 +2195,7 @@
(effects (font (size 1 1) (thickness 0.15)))
(tstamp aac5ff4a-0e4e-4abd-950c-7111c38446c9)
)
(fp_text value "74HC14" (at 3.81 17.57) (layer "F.Fab")
(fp_text value "74HCT14" (at 3.81 17.57) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 0bc69c58-d590-446b-abd2-b9fcfe2b6b4d)
)
@@ -4370,7 +4369,7 @@
(pad "7" thru_hole oval (at 0 15.24) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 217 "unconnected-(U8-Pad7)") (pinfunction "I7") (pintype "input") (tstamp ac597cd1-6bb6-4f56-a405-6b5667ac38a6))
(pad "8" thru_hole oval (at 0 17.78) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 218 "unconnected-(U8-Pad8)") (pinfunction "I8") (pintype "input") (tstamp 0413d1df-925c-4431-a7d6-e1bc717fa23c))
(net 115 "/~{#RD}") (pinfunction "I8") (pintype "input") (tstamp 0413d1df-925c-4431-a7d6-e1bc717fa23c))
(pad "9" thru_hole oval (at 0 20.32) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)
(net 129 "/~{#IOREQ}") (pinfunction "I9") (pintype "input") (tstamp 35081c24-7cba-4478-990d-84371501c469))
(pad "10" thru_hole oval (at 0 22.86) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)

View File

@@ -5204,6 +5204,10 @@
(stroke (width 0) (type default) (color 0 0 0 0))
(uuid 6597e724-ffad-43f1-9619-cca25cced87f)
)
(bus_entry (at 112.522 164.084) (size 2.54 2.54)
(stroke (width 0) (type default) (color 0 0 0 0))
(uuid 69967772-4c76-4e10-bfb2-5b70e1c56a52)
)
(bus_entry (at 112.522 240.284) (size -2.54 2.54)
(stroke (width 0) (type default) (color 0 0 0 0))
(uuid 69e05192-f084-4bb3-aff6-f350c539f1a8)
@@ -7024,6 +7028,10 @@
(stroke (width 0) (type default) (color 0 0 0 0))
(uuid 913e209e-36b5-4ad8-a1f9-ca17572f57ee)
)
(wire (pts (xy 115.062 166.624) (xy 125.222 166.624))
(stroke (width 0) (type default) (color 0 0 0 0))
(uuid 91abda88-a077-44a4-be08-64ddde98a781)
)
(wire (pts (xy 97.79 68.072) (xy 107.95 68.072))
(stroke (width 0) (type default) (color 0 0 0 0))
(uuid 920d9b9c-684b-4682-a717-b08cbdebbcf3)
@@ -9126,6 +9134,10 @@
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid f7777655-8f50-4c74-b5ae-dc2b56bb3fde)
)
(label "~{#RD}" (at 116.332 166.624 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid f7edba16-03fb-48d4-9ada-50a21353a670)
)
(label "A17" (at 57.912 249.809 180)
(effects (font (size 1.27 1.27)) (justify right bottom))
(uuid f9570ec9-4338-4208-aee7-369a45a284f8)
@@ -10427,7 +10439,7 @@
(symbol (lib_id "power:GND") (at 74.422 174.244 0) (unit 1)
(in_bom yes) (on_board yes) (fields_autoplaced)
(uuid 27a26f87-3ba7-47e5-ad37-d7a8feb63205)
(property "Reference" "#PWR?" (id 0) (at 74.422 180.594 0)
(property "Reference" "#PWR0107" (id 0) (at 74.422 180.594 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Value" "GND" (id 1) (at 74.422 178.689 0))
@@ -13887,7 +13899,7 @@
(reference "#PWR0106") (unit 1) (value "+5V") (footprint "")
)
(path "/27a26f87-3ba7-47e5-ad37-d7a8feb63205"
(reference "#PWR?") (unit 1) (value "GND") (footprint "")
(reference "#PWR0107") (unit 1) (value "GND") (footprint "")
)
(path "/210c9332-d11d-4611-886e-5f8653605dbb"
(reference "C1") (unit 1) (value "100nF") (footprint "Capacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mm")

File diff suppressed because it is too large Load Diff

BIN
Utility/galasm Executable file

Binary file not shown.