블로그 이미지
안녕하세요? 이안입니다. 과학의 모든것을 좋아합니다. 이안김

카테고리

분류 전체보기 (483)
NOTICE (12)
SALE (8)
자유 게시판 (40)
◆ APPLE II (54)
◆ SD Smart Drive (15)
◆ SD DISK II (82)
◆ SD Music card (27)
◆ SD MIDI ][+ (23)
◆ Mockingboard 4c (21)
◆ Hyperion 512K RAM+ (5)
◆ Accelerator (10)
◆ PS2 Adapter (9)
◆ Z80 Card (24)
◆ APMSX (26)
◆ APV40 (0)
◆ FC-150 (15)
◆ i86 PC (20)
◆ MPU 관련 (9)
◆ CPLD (1)
◆ RF (5)
◆ 진공관및 오디오 (28)
◆ AutoBike (13)
◆Other (27)
비공개 연구실 (0)
★ 개인방 (1)
스크랩 (0)
임시보관함 (0)
Total
Today
Yesterday

달력

« » 2024.10
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

공지사항

최근에 올라온 글


IIESCHEMATIC.pdf

Apple2 Schematics.pdf












'◆ APPLE II' 카테고리의 다른 글

65C02 PDF  (0) 2014.02.26
APPLE2용 TMS9918 보드 광고  (0) 2014.02.26
6502 CPU의 리버스엔지니어링  (0) 2014.02.26
65C816 in APPLE][+ and APPLE//e  (0) 2014.02.26
8비트 APPLEII 시절의 GUI  (0) 2014.02.17
Posted by 이안김
, |


6502_in_action_14_web.pdf


'◆ APPLE II' 카테고리의 다른 글

APPLE2용 TMS9918 보드 광고  (0) 2014.02.26
APPLE//e 회로도, APPLE][+ 회로도  (0) 2014.02.26
65C816 in APPLE][+ and APPLE//e  (0) 2014.02.26
8비트 APPLEII 시절의 GUI  (0) 2014.02.17
BattleC  (0) 2014.02.17
Posted by 이안김
, |

On Apr 21, 11:17 pm, Steven Hirsch <snhir...@gmail.com> wrote:
> I'm a little confused... Haven't a bunch of folks reported plugging a 65816
> directly into a 6502 socket - with a pin bent out?  Or, did they all really
> mean to say 65802?

Looking at the IIe circuit, it looks like simply
disconnecting pin 1
would indeed work because the Apple IIe leaves pins 3,5,35,36,38 and
39 unconnected.
A II+ on the other hand uses pin 3 (to disable the
data bus buffers) and grounds pin 38.

If you had a card that used the uP SYNC signal (pin 39 of the
peripheral bus) then the VPA signal from the 65816 would not be a
suitable replacement. As the Apple II(+) had USER1 on that pin and the
IIgs has /M2SEL I don't think that many cards would need it.

That only leaves the question of the 65816 driving the data bus during
phase 1. This might prevent snooping the video data, preventing a
program that uses this technique to synchronize with the video
scanner. Has anyone tested this after swapping CPUs?

Otherwise, a 65816 in a IIe with pin 1 bent up should not cause
problems (provided noise on the N/C pins does not interfere with the
default state of those signals).

'◆ APPLE II' 카테고리의 다른 글

APPLE//e 회로도, APPLE][+ 회로도  (0) 2014.02.26
6502 CPU의 리버스엔지니어링  (0) 2014.02.26
8비트 APPLEII 시절의 GUI  (0) 2014.02.17
BattleC  (0) 2014.02.17
Lode runner  (0) 2014.02.11
Posted by 이안김
, |

애플의 Windows로 부를수 있는 GUI가 있습니다.

이것 보고 완전 감동...


8비트 이런 엄청난 GUI OS가 있었다는것이 놀라울 따름입니다.

당시에 엄청난 Idea를 적용했네요.. 윈도우즈가 APPLE사의 Idea를 배낀것이 확실하네요..


APPLE//e의 실제 8비트 컴퓨터에서 돌려보고 감동받아 사진 올려봅니다.




'◆ APPLE II' 카테고리의 다른 글

6502 CPU의 리버스엔지니어링  (0) 2014.02.26
65C816 in APPLE][+ and APPLE//e  (0) 2014.02.26
BattleC  (0) 2014.02.17
Lode runner  (0) 2014.02.11
PRODOS Utilit DISK image  (0) 2014.02.11
Posted by 이안김
, |

BattleC

◆ APPLE II / 2014. 2. 17. 00:51


BattleC.nib


'◆ APPLE II' 카테고리의 다른 글

65C816 in APPLE][+ and APPLE//e  (0) 2014.02.26
8비트 APPLEII 시절의 GUI  (0) 2014.02.17
Lode runner  (0) 2014.02.11
PRODOS Utilit DISK image  (0) 2014.02.11
애플2 관련 서적 표지 하나  (0) 2014.02.08
Posted by 이안김
, |

Lode runner

◆ APPLE II / 2014. 2. 11. 21:42


loderunner.nib


CPM60K.nib


spyspy.nib


mrrobot-1.nib


Drol.nib


tetris48k.nib


'◆ APPLE II' 카테고리의 다른 글

8비트 APPLEII 시절의 GUI  (0) 2014.02.17
BattleC  (0) 2014.02.17
PRODOS Utilit DISK image  (0) 2014.02.11
애플2 관련 서적 표지 하나  (0) 2014.02.08
PS2 Keybaord interface 개선  (0) 2013.10.11
Posted by 이안김
, |

PRODOS Utilit DISK image

◆ APPLE II / 2014. 2. 11. 21:37


prodosUT.nib


VisiCalc.nib


'◆ APPLE II' 카테고리의 다른 글

BattleC  (0) 2014.02.17
Lode runner  (0) 2014.02.11
애플2 관련 서적 표지 하나  (0) 2014.02.08
PS2 Keybaord interface 개선  (0) 2013.10.11
APPLE//c 회로도 site  (0) 2013.10.11
Posted by 이안김
, |

국내의 모 서적가 겉표지가 아주 닮았네요. 제가 하는 책이 번역서였었나? 저자들이 한국사람인데, 이책 내용이 궁금해 집니다.


'◆ APPLE II' 카테고리의 다른 글

Lode runner  (0) 2014.02.11
PRODOS Utilit DISK image  (0) 2014.02.11
PS2 Keybaord interface 개선  (0) 2013.10.11
APPLE//c 회로도 site  (0) 2013.10.11
APPLE //c Power DIN7 pin  (1) 2013.10.11
Posted by 이안김
, |

최근에 SD DISKII Emulator만든다고 APPLE2키보드를 쳐야할일이 많아 졌다.


BASIC으로 프로그램도 짜야 하는 일이 있어, 좀 타이핑을 하니..


이거 생각외로 프로그램 짜기가 아주 불편하다.


특히 에디터가 형편없는 APPLE2라서...


실기에서 하다보니 스크롤도 없다. Insert와 Delete도 ESC눌러가며 해야 하고..


디스크명령도 불편하고.. 특히 명령들이 길다. DOS3.3에서는 귀찮아요..~!


암튼, 가장 많이 쓰게 되는것이 방금천 친 Recall기능의 키..


새로 Version Up을 하였다.


이유는


1) Recall이 Enter친 문자만 나온다.

중간에 몇가 바꾸고 Enter를 치면... 전에것은 없고.. 새로 친 커서 명령하고 글자 몇개만 나온다.

이건 오류로 보는것이 맞다.

그래서.... 바꿨다..

중간에 바꿔도 추가해도 다 나온다.. ^^/


훨씬 더 편리해졌다.

생각보다 어려웠다. 중간삽입과 삭제가 은근 포인팅 계산이 헤깔렸다. ㅋㅋ

가끔은 그냥 생각없이 만드는 프로그램이 좋은데..

이렇게 한자씩 따져가는경우는 좀 재미가 없는 편에 속한다.


그래서... 이제는 기본적인 기능이 잘 동작한다.


한가지 큰 단점은 다른 키를 누르고 치는 기능이 한번밖에 안먹는다..

이건 키를 따로 따로 읽는 구조적인 문제인제..

언전가 대폭 수정을 해야 겠다.


그렇게 되면

내가 생각하는 완벽한 APPLE ][용 키보드가 된다.


나중에 //e와 //c용으로도 만들계획이다.


이 PS2 키보드를 사용해 보니,

1) 키보드 치기가 아주 좋다. 손에 익은 배열이라 편하다.

2) 상하죄우 키를 만들수 있다. APPLE][+는 상하키가 없는데 APPLE//e키코드를 삽입해서 넣어주니.. 잘 동작한다.

3) Autorepeat도 된다.

4) APPLE][+에서 소문자를 무리없이 입력할 수 있다. 물론 ROM에서 지원해야 한다. 알기로는 한국형 ROM에서만 된다는 이야기를 들었다. 아마도 대만에서 수정한 APPLE][롬일들.. 덕분에 소문자를 APPLE][+이지만 읽고 쓸수 있다.


롬은 어디 있는데...?


찾았다.

이것은 F000~FFFF에 해당하는 4KB롬이다.


apple2_f(KOR APPLE][).rom


이것은 시작시에 APPLE ][ 라고 표시해주는 롬으로


프로도스등의 오리지날 APPLE][처럼 잘 동작하는 롬이다.


APPLE][ 클론 보드등에 적극 추천한다.

'◆ APPLE II' 카테고리의 다른 글

PRODOS Utilit DISK image  (0) 2014.02.11
애플2 관련 서적 표지 하나  (0) 2014.02.08
APPLE//c 회로도 site  (0) 2013.10.11
APPLE //c Power DIN7 pin  (1) 2013.10.11
APPLE//e의 키보드 부분 회로  (0) 2013.10.03
Posted by 이안김
, |

APPLE//c 회로도 site

◆ APPLE II / 2013. 10. 11. 22:31

http://www.downloads.reactivemicro.com/Public/Apple%20II%20Items/Hardware/IIc/Technical/

'◆ APPLE II' 카테고리의 다른 글

애플2 관련 서적 표지 하나  (0) 2014.02.08
PS2 Keybaord interface 개선  (0) 2013.10.11
APPLE //c Power DIN7 pin  (1) 2013.10.11
APPLE//e의 키보드 부분 회로  (0) 2013.10.03
APPLE//에 사용되었던 특이한 확장 카드  (0) 2013.09.30
Posted by 이안김
, |

APPLE //c Power DIN7 pin

◆ APPLE II / 2013. 10. 11. 22:30
From the Apple //c Technical Reference Manual 

Section 11.2.2 The External Power Connector 
  

The external power supply is attached to the 
internal converter by means of a 7-pin DIN 
connector. The connector pins are identified 
in Figure 11-1 and Table 11-3. 
  

Figure 11-1  External Power Connector 
.     --+ +--       Pin#      Signal 
.   / 7 |_| 1 \     Pin 1     Not Connected 
.  | 6       2 |    Pin 2,3   Signal Ground 
.   \ 5  4  3 /     Pin 4     Shield Ground 
.    \_______/      Pin 5,6   +15 VDC 
.                   Pin 7     Not Connected 

Table 11-3   External Power Connector Signals 

Pin#    Name      Description 
1,7       --      Not Connected 
2,3     Ground    Common Electrical Ground 
4       Chassis   Chassis Ground 
5,6     +15       +15-volt DC input to converter 


'◆ APPLE II' 카테고리의 다른 글

PS2 Keybaord interface 개선  (0) 2013.10.11
APPLE//c 회로도 site  (0) 2013.10.11
APPLE//e의 키보드 부분 회로  (0) 2013.10.03
APPLE//에 사용되었던 특이한 확장 카드  (0) 2013.09.30
APPLE// coprocessor card [Z80 card]  (0) 2013.09.15
Posted by 이안김
, |

APPLE ][+ 와는 매우 다른 구조를 갖고 있다.

직관적인 느낌으로는 원가 절감이다.

기존의 APPLE][+는 ASCII키보드로 Data를 ASCII로 보내면 되는데,

이것은 APPLE이 직접 키보드배선을 검사하는 구조를 갖고 있다.

요즘과 비교하면 //e는  배선으로 만들어져 있고,

][+는 PS2 라고 봐도 될듯하다.

따라서 APPLE][는 Datat 7핀, Strobe 1핀 Reset 1핀 및 전원선인데

이것은 한참 많은 24선이다.




문득 생각나는것이..

그간 잘 보관하던 ROMAX를 버린것이다..

케이스도 있었는데.. 무슨 귀신이 씌였는지..

과거를 버려야 미래에 잘 산다라는 생각이 문득 들었다..

그래서 버렸는데... 맞는지는 아직도 모르지만, 아쉬움은 지금도 든다..


그리고.. 잘 세팅해둔 8비트는 관리를 잘못해서 같이 숙소를 쓰던 녀석한테 거의 도둑을 맞은것이다.

FDD도 2대였고 조이스틱에 그리고 용산에서 사온 황금빛의 보드와 황금딱지 붙은 RAM 이었는데....ㅠ.ㅠ



'◆ APPLE II' 카테고리의 다른 글

APPLE//c 회로도 site  (0) 2013.10.11
APPLE //c Power DIN7 pin  (1) 2013.10.11
APPLE//에 사용되었던 특이한 확장 카드  (0) 2013.09.30
APPLE// coprocessor card [Z80 card]  (0) 2013.09.15
The 25¢ Apple II Real Time Clock  (0) 2013.09.14
Posted by 이안김
, |

ATO20클럭이라고 합니다.



ATO20클럭이라고 하는데, 구성에 ROM이 없는것으로 보아 NO SLOT CLOCK의 슬롯버젼을 보입니다.

그냥 Prodos에서 호환되는 정도겠네요.

심플하게 그냥 만들어진 Clock일듯.. NO Slot clock칩도 값이 꽤 나가서 싸면 구해봄직도 한데, 비싸면 가치는 없지요.


AVR에 DS1307넣어서 만드는것이 나을지도.. 물론 Address부분과 Firmware부분이 있지만, 잘 하면 될껍니다.




판매자가 Video sync신호에 맞춰서 Interrupt를 발생시키는 카드라고 알고 있는데,


맞는지는 모르겠으나, 해당 카드는 IRQ를 1초에 60번 발생시키는 카드겠지요.


쓰기에따라서는 대단한 기능을 할수 있는 카드인데,


6502로 멀티tasking을 시킬때 필요한 카드겠지요?


게임 개발할때도 대단히 유용해 보입니다.


향후에 개발해보고 싶은 Timer카드와 비슷한 기능을 할수도 있을것 같네요.







요런 책자도 있었나 봅니다.

APPLEII를 쓰는 법





낙원에서의 사과와 애플II와의 연관?







'◆ APPLE II' 카테고리의 다른 글

APPLE //c Power DIN7 pin  (1) 2013.10.11
APPLE//e의 키보드 부분 회로  (0) 2013.10.03
APPLE// coprocessor card [Z80 card]  (0) 2013.09.15
The 25¢ Apple II Real Time Clock  (0) 2013.09.14
SD DISKII Emulator for ProDos 8  (0) 2013.08.29
Posted by 이안김
, |

사실 이 카드는 Z80 CPM카드로 많이 불리던 카드이다.

애플은 6502CPU를 사용하지만, 이카드만 달면 Z80 CPU 머신으로 바뀌게 된다.

물론 Z80프로그램도 환경만 맞으면 돌아간다.

APPLE의 O Addres 방식이 메모리맵 방식이로 좀 차이는 있으나, CPM프로그램등의 TEXT프로그램은 모두 잘 돌아간다.

한때는 이것을 확장해서 VDP를 달고 SOund카드를 patch해서 MSX를 흉내낼수 있지 않을까 생각해 보았는데,

IO Addres가 메모리 IO이고 해서 좀더 많은것을 바꿔야 해서 아주 간단하지는 않을것 같아서 시도되지는 않았다.

이 CPM카드로 z80에 대해서 알게 되었다.

처음 느낀것은 와!! Z80 CPU는 6502보다 더 좋구나 ! 였다.

이러한 차이점은 어셈블러로 들어가면 알수 있다. 다른 경우에는 ? 글쎄... 잘 모를듯..


그리고 , 언젠가 애플에 VDP와 Sound를 달아서 FC-150이라도 만들어 보리라...

재미로는 FC-150카드는 만들어 볼수는 있을것 같다.

IO는 APPLE의 IO를 다시 Mapping해서 사용하면 꽤 작동될듯... ㅎ


SOftware가 많은 MSX로 가야 좀 충분하게 사용할 수 있을듯...


6502 머신으로는 Comodore64도 괜찮을것 같고,

게임기인 Famicom도 6502이므로 나름 가능성이 있어 보인다.

향후에 Z80과 6502쪽 타 시스템 카드를 만드는것을 고려해 보겠다.

단, 롬팩등은 SD카드로 Emulation한다. ^^/

이렇게 되면 아주 재미있는 APPLE이 될것이다.


왜 아무도 이러한 재미있는 시도는 안하는지 참 알수가 없다.




Posted by 이안김
, |

간단하면서 효과적인 Real time clock이다.

음.. IRQ Disable만 쉽게 할수 있으면 쓸만은 하겠네요



출처: http://www.atarimagazines.com/compute/issue9/030_1_THE_25C_APPLE_II_REAL_TIME_CLOCK.php

The 25¢ Apple II Real Time Clock

Erann Gat
Oak Ridge, Tennessee

It is interesting to count the number of features of the Apple II which traditionally require boards full of parts to implement, but are done with only one or two inexpensive chips. For instance, the analog to digital conversion for the game paddles would normally cost at least $25, but is done on the Apple with a single inexpensive timer chip. The refresh for the dynamic memory requires no extra parts at all as this is done by the video circuitry.

This philosophy of doing things the easy way makes one wonder at the prices that are being charged for some of the peripheral boards for the Apple, particularly real time clocks. A search for an easier (and hopefully cheaper) way yielded a clock with good accuracy and any feature found on the more expensive boards, including many extra fringe benefits, with a total cost of between 3 to 25 cents depending on how sophisticated you want it to be.

All About Interrupts

Interrupts are something almost every computer hobbyist has heard of, but most of the information about them is rather cryptic. This section will attempt (note that verb) to clarify how interrupts work because they form the basis of the 25 cent clock.

Here is how an interrupt works: on the 6502 microprocessor there are two pins called IRQ, and NMI. IRQ stands for Interrupt ReQuest and NMI stands for Non Maskable Interrupt. When either one of these pins is grounded, the processor finishes the machine language instruction it is currently working on, saves the program counter and processor status register onto the stack, (if you don't know what that means it isn't important) and jumps to a program somewhere in memory called an interrupt handling routine or interrupt handler. It then executes the interrupt handler until it encounters a RTI (ReTurn from Interrupt) instruction. It then restores the status register and program counter to their original values and continues executing the main program at the point where the interrupt occurred.

The main program is not affected by an interrupt except that some time is lost during the interrupt and the main program slows down. How much it slows depends on the length of the interrupt handler.

Now suppose that the interrupt handler was a routine that incremented a memory location and returned. This would then be an interrupt counter; i.e. every time an interrupt occurs, the counter is incremented. Now suppose that a pulse was applied to the interrupt line exactly once each second. Voila! A real time clock that tells time in seconds. This is the idea behind the 25 cent clock.

More About Interrupts

Up until now the 25 cent clock has been discussed in generalities and theories. This section discusses the actual implementation.

First some more facts about interrupts on the 6502: There are two main differences between the IRQ and NMI interrupts. In the 6502 status register there is a flag called interrupt enable. This flag can in effect turn off the IRQ line. If the enable flag is not set, the 6502 will deny Interrupt ReQuests. It will ignore them as if they were not there. On the other hand, NMI cannot be turned off. When a Non Maskable Interrupt occurs, the processor will always act on it and jump to the interrupt handler.

The second difference is that NMI and IRQ have their interrupt handlers at different places in memory. IRQ has another difference in that its interrupt handler is the same routine which handles the BRK instruction. BRK in effect generates a IRQ signal. There is a way to tell IRQ's from BRK's (in fact the Apple monitor does this for you) but this takes up quite a bit of time as well as creating other complications. NMI therefore is more suitable than IRQ for the clock. However, there is no law that says IRQ can't be used.

Next, a signal of known frequency must be found. A time base generator can be used, but at several dollars a piece it would be difficult to stay within the 25¢ budget. An ideal signal can be found in the video circuitry. This signal is the 60 Hz (meaning 60 times each second) pulse which generates the vertical retrace. This signal can be tapped at two locations shown in figure 1. The physical details are discussed in the next section.

FIGURE 1

The Three Cent Clock

Implementing the clock in its simplest form involves simply connecting the NMI line to a signal source. On the Apple, the NMI line can be accessed from any of the peripheral slots on the rear of the board. The location of the NMI line is shown in figure 2. The connection can be made using a prototype board or by simply inserting a wire between the metal contact and the plastic housing of the connector.

FIGURE 2

The 60 Hz signal can be accessed in the two locations shown in figure 1. The first place is a small solder filled hole in the board. A wire may be soldered in the hole, or a wire wrap pin may be attached and connected to the NMI line via an alligator clip to make the clock removable. NOTE; This may void your warranty. Check with your dealer!

The other connection point does not involve soldering. To make the connection, carefully remove the IC at location C-14. The row and column numbers are marked on the board itself. Then insert a piece of very thin (wire wrap) wire into pin 4 of the socket. (See figure 1.) Now carefully reinsert the IC making sure it is oriented correctly and all the pins are securely seated in the socket.

Before this connection is made an interrupt driver must be entered into memory. If this is not done, the system will crash and RESET will have no effect until the connection is broken.

To get the three cent clock off to a flying start, enter the short program in listing 1. This can be done in the monitor or the mini-assembler. When the program is in memory, connect the interrupt line and watch the upper left hand corner of the screen. If everything was done correctly, the first character on the screen should start changing rapidly. What is happening is that sixty times a second the video circuitry generates a signal which is now being used to generate an interrupt. When an interrupt occurs, the processor starts executing the interrupt handler which is located at 3FB hexadecimal on an Apple. Usually the interrupt handler starts with a jump instruction since there are only five bytes of usable memory at 3FB, but since this program is so short it can be entered directly at 3FB. The interrupt handler that is now in memory simply increments a memory location and returns to the main program. This is a real time clock. It tells time in sixtieths of a second. Granted, it isn't very useful as it is now, but that will be fixed in a moment.

LISTING 1

*3FBL

03FB- EE 00 04 INC $0400

03FE- 40       RTI

03FF- 00       BRK

Now incrementing a memory location on the screen isn't very exciting, but try hitting a few keys. Surprise! They still work. In fact, everything works. Try dumping out some memory or printing something in basic. Everything will work normally and the first character on the screen will go right on counting. WARNING: the disk will NOT work. Neither will the tape. This is because the interrupts slow down the main program enough to upset the precise timing required by the disk and tape routines. Having the interrupt connected will also make the bell tone sound peculiar.

To make the clock more useful, enter the three programs in listing 2. The first program is simply a jump instruction to the second program which is a clock routine to drive an hour-minute-second clock. The third program is a basic routine which sets the clock and outputs the time of day. The programs are thoroughly documented so they won't be discussed here.

LISTING 2 PROGRAM #1

*3FBL

03FB- 4C 00 03 JMP $0300

03FE- 00       BRK

03FF- 00       BRK

Making It Better or When Is An NMI Really An IRQ?

It should be clear by now that the power of the clock lies in the interrupt driver program, but there are some hardware enhancements that can be made. These extra features will roll the price up to a respectable 25 cents (more or less).

The first add-on is a sophicitcated piece of hardware called a switch. This is used to make easier the task of turning the interrupts on and off. The switch is installed so that it breaks the connection from the 60 Hz signal. Personal experience has shown that flipping a switch makes a more dignified display than pulling a wire in and out.

The second modification is a bit more complicated. (Seriously.) This modification allows the computer to control the interrupts via one of the annunciator outputs on the game I/O connector. The only extra part required is a 7400 or 74LS00 nand gate. It is wired according to figure 3 using a pro-totype board, an off-board wire wrap socket, or the breadboard area on the Apple board.Even the revision 1 boards have room for two IC's in the right hand corner under the keyboard. NOTE: To wire the modification in this way requires removal of the Apple board and will probably void your warranty. Check with your local dealer.

FIGURE 3

The connection to the game I/O connector is made using a piece of stiff wire such as the lead of a small resistor. This wire is inserted into the connector and bent as shown in figure 4. A 16 pin IC socket with one pin clipped to accommodate the wire is inserted over that and the game paddles are plugged into that socket. Many connections can be made to the game connector in this manner without having to clip pins off of the game paddles.

FIGURE 4

The Disadvantages

Unfortunately, every silver lining comes equipped with a cloud and the 25 cent clock is no exception. The main problem is that the disk and tape will not work, as well as other programs which involve precise timing. The interrupts must be disabled, either manually or under program control, while such programs are running.

Another hitch is in the computer control circuit itself. When an Apple is turned on, the annunciator outputs are high (logic 1) so this has been made to disable the interrupts. An autostart rom however, turns all the annunciators to logic 0. Before this happens all the annunciators are still at logic 1 for a few milliseconds so inverting the signal from the annunciator will still leave the interrupts enabled for enough time to cause an interrupt and a system crash. Therefore, the interrupts must be disabled manually upon power up with an autostart rom.

Another problem is that the bell tone sounds raspy. This isn't serious, but it can get on your nerves after a while. It doesn't make a good way to check if interrupts are enabled.

The final problem is that the clock seems to lose about ten seconds each hour. This can be remedied by adding ten seconds to the seconds counter each hour.

Fringe Benefits

The 25 cent clock is remarkably user proof. The NMI line doesn't require debouncing, and resetting the comupter doesn't interfere with its operation either (unless the reset key is held down for a long time).

The two main dangers of system crashes are working on the interrupt handler while interrupts are enabled, and not saving registers. THIS IS IMPORTANT!!! You must save each register you intend to modify. If you do not you will get very mysterious results. You can save registers in memory or you can push them onto the stack. There is also a routine to save and restore all registers in the monitor.

Once these restrictions have been met, the 25 cent clock opens a vast new horizon of features that would cost tens of dollars if bought from vendors. The price you pay is speed. The longer the interrupt routine, the slower the computer runs. This is not a severe handicap. The clock routine does not slow the computer down enough to be perceived, even when the interrupts are switched oh and off for comparison. In order to slow the computer down by even one percent it requires a one hundred instruction routine.

Some, things that can be done include:

Control Of Computer Speed Using Game Paddles: have the interrupt driver pause according to the position of a game paddle to give control of listing speed, how fast a program runs, etc.

Keyboard Buffering: have the interrupt routine sample the keyboard and store any keypresses in a buffer to give storage of multiple keypresses while something else is going on.

Mixing Display Modes: sixty times a second switch to another display mode to mix text and graphics, or mix two graphics modes for extra colors.

The possibilities are endless. You can even run two programs at once using the interrupt. The twenty-five cent Apple II real time clock is a lot more than just a clock, it's a cheap way of doing a lot of expensive things, right in line with Apple tradition.

GLOSSARY

INCREMENT- to add 1 to a counter

INTERRUPT HANDLER- a machine language program which is executed whenever an interrupt occurs

INTERRUPT VECTOR- the address of the interrupt handler routine

IRQ- Interrupt ReQuest; an interrupt line which can be disabled under program control

NMI- Non Makable Interrupt; interrupt line which cannot be disabled

REAL TIME CLOCK- a device which provides a computer with information about the time without disrupting the computer's normal functions

LISTING 2 PROGRAM #2

*300LL                  CLOCK

0300-   85      05      STA     $05      SAVE A AND X

0302-   86      06      STX     $06

0304-   A9      3C      LDA     #$3C      A = 60 DECIMAL  X = 0

0306-   A2      00      LDX     #$00

0308-   E6      04      INC     $04       COUNT 1/60 SECOND

030A-   C5      04      CMP     $04         FULL SECOND YET?

030C-   D0      22      BNE     $0330        IF NO THEN RESTORE REGISTERS & RETURN

030E    86      04      STX     $04       RESET 1/60 SECONDS

0310-   E6      03      INC     $03       COUNT 1 SECOND

0312-   C5      03      CMP     $03         1 MINUTE YET?

0314-   D0      1A      BNE     $0330

0316-   86      03      STX     $03

0318-   E6      02      INC     $02       MINUTES

031A-   C5      02      CMP     $02

031C-   D0      12      BNE     $0330

031E-   86      02      STX     $02

0320-   A9      0D      LDA     #$0D      SET A = # HOURS IN 1 DAY PLUS 1

0322-   E6      01      INC     $01       HOURS

0324-   C5      01      CMP     $01       FULL DAY?

0326-   D0      08      BNE     $0330

0328-   E8              INX               IF YES SET HOURS TO 1

0329-   86      01      STX     $01

032B-   A5      05      LDA     $05       RESTORE REGISTERS

032D-   A6      06      LDX     $06

032F-   40              RTI

0330-   A5      05      LDA     $05       RESTORE THEM HERE TOO

0332-   A6      06      LDX     $06

0334-   40              RTI

0335-   00              BRK

0336    00              BRK

0337    00              BRK

0338    00              BRK

0339    00              BRK

LISTING 2 PROGRAM #3

>LIST CLOCK DRIVER

     5 PRINT CHR$(4); "BLOAD CLOCK"

     7 POKE 1020, 0 : POKE 1021, 3 : REM SET INTERRUPT VECTOR

    10 INPUT "INPUT TIME →", H, M, S

    15 REM SET CLOCK

    20 POKE 1, H

    30 POKE 2, M

    40 POKE 3, S

    43 POKE 4, 0

    45 A = PEEK(-16296) : REM TURN CLOCK ON

    47 INPUT "12 OR 24 HOUR CLOCK", A : POKE 801, A + 1

    48 REM  SEE       LISTING   FOR EXPLANATION          OF LINE 47

    50 CALL -936 : REM CLEAR SCREEN

    60 VTAB 10 : PRINT "

    61 REM ERASE OLD TIME

    70 VTAB 10 : TAB 10

    75 REM DISPLAY CURRENT TIME

    80 PRINT PEEK(1) ; " : ";

    81 REM  HOURS

    90 IF PEEK (2) < 10 THEN PRINT "0" ; : PRINT PEEK (2),

    91 REM MINUTES

    100 PRINT PEEK (3), PEEK (4) : GOTO 60

    110 REM SECONDS AND 1/60 SECONDS

 

'◆ APPLE II' 카테고리의 다른 글

APPLE//에 사용되었던 특이한 확장 카드  (0) 2013.09.30
APPLE// coprocessor card [Z80 card]  (0) 2013.09.15
SD DISKII Emulator for ProDos 8  (0) 2013.08.29
APPLE][ Puls F000~FFFF Monitor ROM  (0) 2013.08.20
APPLE][와 IBM FDD  (0) 2013.07.20
Posted by 이안김
, |

 

 

 

 

 

보는것이 믿는것

'◆ APPLE II' 카테고리의 다른 글

APPLE// coprocessor card [Z80 card]  (0) 2013.09.15
The 25¢ Apple II Real Time Clock  (0) 2013.09.14
APPLE][ Puls F000~FFFF Monitor ROM  (0) 2013.08.20
APPLE][와 IBM FDD  (0) 2013.07.20
APPLE2용 SD Memory Emulator를 위하여  (0) 2012.05.14
Posted by 이안김
, |

PRODOS에서 문자열검색으로 넘어가지 않는 문제가 있어, 기존의 APPLE 88로 표시되는 놈을 APPLE ][로 교정한 F000~FFFF의 4KB롬이다.

 

구하지 못해 결국 손대서 만들었다.

 

문자열 찾는것도 어렵지만.. 시행착오 겪는것이 더 어려운듯 하다.

 

이 롬은 오리지날의  APPLE][와는 조금 다르다.

 

소문자 입력을 지원한다. 그외 조금 다른곳이 있는데 왜인지는 모르겠다.

 

apple2_f(KOR APPLE][).rom

 

'◆ APPLE II' 카테고리의 다른 글

The 25¢ Apple II Real Time Clock  (0) 2013.09.14
SD DISKII Emulator for ProDos 8  (0) 2013.08.29
APPLE][와 IBM FDD  (0) 2013.07.20
APPLE2용 SD Memory Emulator를 위하여  (0) 2012.05.14
ROM WRITER 카드 및 BASIC 소스  (2) 2012.04.28
Posted by 이안김
, |

APPLE][와 IBM FDD

◆ APPLE II / 2013. 7. 20. 11:10

오래전에 2DD 디스켓에 기록하는 인터페이스를 만들었었습니다만, 호환성되는 기종과 그렇지 않은 기종이 있었습니다.

문제 해결을 위해 노력했지만, 시간상..    미뤄 두었었습니다.

그간 바쁜 일들이 많아 SD DISKII Emulator도 만들지 못하고 있습니다..

 

사실 3.5" 드라이버와 디스켓은 아직 까지는 쉽게 구할수 있는데, 예전의 2DD디스켓을 구하기가 쉽지 않고

또 2HD디스켓을 강제로 2DD로 만들어서 사용하는것은 기록 시그널이 달라 안정성에 문제가 있을수 있을것 같아 썩 마음에 들지 않았습니다.

그래서 싸게 쉽게 구할수 있는 2HD 디스켓을 사용하기로 마음먹었습니다.

 

그간 이사다 뭐다 일들이 많아 차일 피일 미루다가, 이제는 개인 LAB실이 나름 갖춰져서 필요한 최소의 장비만 새로운 곳으로 이동시켜 놓고 새로운 LAB실 기념으로 작업을 착수 하였습니다.

APPLE과 플로피 디스켓에 향수가 많아 디스크드라이버에 대해 다시 연구를 시작해 보았습니다.

 

예전에 GIGO라고 말한적이 있지요. 우둔한 자는 이것이 무슨 말인지 못 알아 들었겠지만,

이것은 제대로 된 Data를 기록한 후에야 제대로 된 Data를 읽을 수 있다라는 이야기 입니다.

 

즉, 개발할때는 Reading이 먼저가 아니라 Writing이 먼저 우선되어야 하고 이 Writing된후에야 Reading을 검사해야 합니다.

어떻게든 잘 Writing이 되었다면 나름대로의 Decoding을 구성할수 있겠지요.

각설하고..

 

APPLE2의 DISKII는 Data를 기록할때 GCR포맷을 사용합니다.

이러한 Data를 MFM용 IBM FDD에 당연히 그냥 쓰고 읽을 수가 없지요.

그래서 어떻게든 GCR Data를 변환하여야 하며,  기타 다른 디스크드라이버 콘트롤 신호도 APPLE의 I/O에 맞게 변환해줘야 합니다.

 

애플에서는 각Bit를 4uS마다 Data bit를 저장합니다.

HD 디스켓을 제어하려면 2us 단위의 Data를 처리해야 합니다.

APPLE에서는 절대로 2HD를 그냥 처리할수 없어 AVR MPU를 사용하였습니다.

구해놓은 쓸만한 보드를 기존에 만들어둔 I/O장치에 추가하여 Data의 Encoder/Decoder를 구현하였습니다.

 

ATTINY2313이 20Mhz로 동작하는데도 2uS신호를 처리하기가 대단히 벅찹니다.

오버클로킹이라도 할까 생각했었습니다.

 

10여일간의 시행 착오와 프로그램 최적화 끝에 결국 아래와 같이 HD디스켓을 잘 읽고 쓸수 있게 되었습니다.

 

이에 기쁜 마음에 동영상을 올려봅니다.

해당 인터페이스는 안정성과 최적화를 더 거친후에 PCB를 만들 계획입니다.

 

이로써 IBM FDD의 연결은 모두 끝난것 같습니다.

사용한 APPLE은 예전에 만든 IBM케이스를 사용한 APPLE입니다.

 

동영상에 보시면 APPLE의 FDD는 7번 슬롯에 꽂혀 있고
IBM의 FDD는 6번슬롯에 꽂혀 있습니다.

 

IBM PC용 FDD는 예전과 같이 SIDE A, SIDE B를 APPLE의 D1, D2에 맞춰 두어서 마치 2대의 FDD처럼 동작합니다.

IBM PC용 FDD는 삼성FDD를 사용하였으며 HD로 동작하고 300RPM으로 회전하도록 약간의 Modification이 이루어져 있습니다. 

 

첫번째 동영상은 포맷과 COPY를 해보는 화면입니다.

 

두번째 동영상은 부하를 걸어 TEST하는 화면입니다.

 

아주 잘~ 됩니다.

 

이번 프로젝트는 꽤나 어려웠네요. 불가능할 줄 알았습니다.

이제는 SD DISKII Emulator에 집중 할 수 있겠습니다.

 

왼쪽이 이번에 사용한  MPU보드입니다. 적당한것 임시로 사용했습니다. MPU는 ATTINY2313이며 20Mhz로 동작합니다.

이것은 사실 APPLE의 40배정도의 속도를 냅니다.

오른쪽은 APPLE과의 I/O등을 담당합니다. 몇 가지 TTL과 OPAMP그리고 90S2313 4Mhz가 하나 들어 갑니다.

 

 

 

 

 

 

 

 

'◆ APPLE II' 카테고리의 다른 글

SD DISKII Emulator for ProDos 8  (0) 2013.08.29
APPLE][ Puls F000~FFFF Monitor ROM  (0) 2013.08.20
APPLE2용 SD Memory Emulator를 위하여  (0) 2012.05.14
ROM WRITER 카드 및 BASIC 소스  (2) 2012.04.28
SN76489  (0) 2012.04.22
Posted by 이안김
, |


여러가지 구상중에진행하고자하는 회로에 맞는 부품

물론 이것이 없어서 못한다는 아니지만, 왠지 부족하면 하다가 중단되는 사태를 맞이할수 있으므로,

초기부터 문제가 없이 넉넉한 준비로 시작하고자 충분한 크기의 메모리를 준비하였네요.

Emulator의 핵심인 512KB SRAM, Flash Memory

이제는 좀더 나은 구성이 되겠지요..

그간 잠시 쉬었던 AVR을 다시 가동시켜야 할때가 가까와졌습니다.

'◆ APPLE II' 카테고리의 다른 글

APPLE][ Puls F000~FFFF Monitor ROM  (0) 2013.08.20
APPLE][와 IBM FDD  (0) 2013.07.20
ROM WRITER 카드 및 BASIC 소스  (2) 2012.04.28
SN76489  (0) 2012.04.22
APPLE2+의 CPU를 65C02CPU로 교체  (0) 2012.04.21
Posted by 이안김
, |


이 ROM Writer를 PC와 연결하기 위한 ISA 슬롯용 8255 카드


이 카드는 사실 8255 PPI를 사용하기 위해 구상된 카드가 아니었다.

이 카드는 그당시에 유행하던 Adlib 카드를 손수 자작하기 위해 회로를 참조하여 만든 Adlib카드로써

388H의 Address와 기타 배선을 조금 사용하여 8255를 연결한 보드이다.

이 PPI를 이용하여 ROM Writer를 동작시켰으며,

약간의 개선을 통하여 2716~2764/27256까지 UVEPROM을 Writing할수 있었다.

이 ROM Writer가 있어야만 그 당시에는 Micro computer를 자작등을 할수 있었다.

요즘같이 편리한 세상에서 이런 ROM Writer까지 자작하면서 마이컴을 배우려고 한사람이 있을른지?

그때는 대단한 열정으로 생각보다 많은것은 했던것 같다.

위의 ADLIB카드의 중앙에는 YM3812가 꽂아져 있어야 하는데, 지금 따로 보관하고 있어 사진상에는 없다.

해당 칩은 용산에서 게임기 가게를 돌아다니면서 구한 칩이다.

그 당시에는 이 YM3812가 수출 금지 품목이어서, 겉에 YM3812라고 표기되지 않았다.

같이 사용되는 DAC YM3014인가 그렇다.. 무슨 플로팅포인트 DAC라고 하였다.

적당한 시간에 외장형으로 Adlib 사운드 카드를 만들어 볼까 한다.

이렇게 Adlib 카드와 Rom Writer용 디지탈출력(DIO)도 만들었었다.

최초에 먼저 IBM PC용 인터페이스를 시작한떄로 아마 1992년도였던것 같다.

20년전 잡동사니.. ㅎㅎ

세월이 많이 흘렀구나.. ^^

아래는 Rom writer소스

별로 다듬지 않고, 이것저것 변경하던 소스..

2764를 27256동작시키기 위해 Hardware를 변경했던 부분도 있다.

지금같으면 Latch를 써서 간단하게 만들어서 기록가능한 최대용량에 대한 문제는 없었을텐데 하는 생각도 한다.

오래전 추억꺼리라서 올려둔다.

---------------------------------------------------------------------------------------


67 PRINT
1000 ' ROM READ & WRITE '
1001 RS=&H90:SA=&H0:OUT 783,RS: OUT 782,&HFF:OUT 781,&HFF:OUT 780,&HFF
1002 DIM M(8192)
1004 DIM EAH(2048),EAL(2048),EDA(2048)
1010 CLS
1020 PRINT"===================================================================="
1025 PRINT" -- 27256 ROM WRITER -- FILE=";F$
1027 PRINT" START ADDR=";SA
1029 PRINT"===================================================================="
1030 PRINT
1035 PRINT" (1) ROM ERASE CHACK"
1040 PRINT" (2) READ FILE"
1050 PRINT" (3) WRITE ROM & VERIFY"
1060 PRINT" (4) VERIFY DATA WRITING"
1065 PRINT" (5) READ DATA"
1067 PRINT
1070 INPUT" SELECT ONE ";I
1075 IF I>5 THEN 1010
1080 ON I GOSUB 1500,2000,3000,4000,5000
1090 GOTO 1010
1500 OUT 783,RS
1510 FOR AH=SA TO &H7F
1520 OUT 782,AH
1530 FOR AL=0 TO &HFF
1540 OUT 781,AL:LOCATE 19,1:PRINT HEX$(AH);HEX$(AL)
1550 A=INP(780)
1555 GOSUB 10000
1560 IF A<>255 THEN LOCATE 20,1:PRINT CHR$(7);" ROM CLEAR ERROR AT ";HEX$(AH);HE
X$(AL);"="HEX$(A)
1570 NEXT AL
1580 NEXT AH
1590 RETURN
2000 ' READ FILE '
2002 PRINT"--------------------"
2004 PRINT" READ FILE"
2006 PRINT"--------------------"
2020 FILES
2030 INPUT "INPUT YOUR WANTED FILE (FULL NAME) ";F$
2035 IF F$="" THEN RETURN
2040 OPEN F$ FOR INPUT AS #1
2060 FOR I=1 TO 4096
2070 INPUT #1,M(I)
2080 NEXT I
2085 CLOSE #1
2090 RETURN
3000 ' ROM WRITE '
3002 PRINT
3004 PRINT"-------------------"
3005 OUT 783,&H80:OUT 782,&HFF:OUT 781,&HFF:OUT 780,&HFF
3006 PRINT" WRITE ROM "
3007 C=0
3008 PRINT"-------------------"
3009 PRINT" REMOVE OLD ROM AND SETNEW ROM AND PUSH WRITE BUTTON "
3010 PRINT
3012 INPUT "WHEN READY PRESS RETURN ";K$
3015 FOR AH=SA TO &H7F
3020 OUT 782,AH+&H80
3030 FOR AL=0 TO &HFF
3035 C=C+1
3040 OUT 781,AL
3050 OUT 780,M(C)
3052 LOCATE 19,1:PRINT HEX$(AH);HEX$(AL)
3055 OUT 782,AH
3060 FOR T=1 TO 100:NEXT T
3070 OUT 782,AH+&H80
3080 NEXT AL
3090 NEXT AH
3100 OUT 780,&HFF:OUT 781,&HFF:OUT 782,&HFF:OUT 783,RS
3110 INPUT "25 Vpp Switch OFF and press RETURN. ";K$
3120 C=0:EC=0
3140 FOR AH=SA TO &H7F
3150 OUT 782,AH+64
3160 FOR AL=0 TO &HFF
3170 C=C+1
3180 OUT 781,AL
3190 LOCATE 19,1:PRINT HEX$(AH);HEX$(AL)
3200 A=INP(780)
3205 GOSUB 10000
3210 IF M(C)<>A THEN EC=EC+1:LOCATE 20,1: PRINT"error counted .";HEX$(EC);EAH(E
C)=AH:EAL(EC)=AL:EDA(EC)=MC
3220 NEXT AL
3230 NEXT AH
3240 IF EX=0 THEN RETURN
3250 GOSUB 4080
3260 RETURN
4000 'VERIFYING ROM AND WRITE ONCE MORE"
4002 C=0:EC=0
4005 OUT 783,RS
4010 FOR AH=SA TO &H7F
4015 OUT 782,AH+64
4020 FOR AL=0 TO &HFF
4025 C=C+1
4030 OUT 781,AL
4040 A=INP(780)
4045 GOSUB 10000
4050 IF M(C)<>A THEN EC=EC+1:LOCATE 20,1:PRINT"ERROR COUNTED ";HEX$(EC):EAH(EC)=
AH:EAL(EC)=AL:EDA(EC)=M(C)
4060 NEXT AL
4070 NEXT AH
4075 IF EC=0 THEN RETURN
4080 PRINT
4090 PRINT" PUSH WRITE BUTTEN AND HIT RETURN";:INPUT K$
4095 OUT 783,&H80
4100 FOR I=1 TO EC
4110 OUT 782,EAH(I)+32:OUT 781,EAL(I):OUT 780,EDA(I)
4120 FOR T=1 TO 110:NEXT T
4130 OUT 782,EAH(I)+64
4140 NEXT I
4150 RETURN
5000 CLS
5010 OUT 783,RS
5020 FOR AH=SA TO &H7F
5030 OUT 782,AH
5040 FOR AL=0 TO &HFF STEP 16
5050 OUT 781,AL:PRINT HEX$(AH);HEX$(AL);"-";
5060 FOR C2=AL TO AL+15
5070 OUT 781,C2
5080 A=INP(780):
5085 IF INP(783)<>RS THEN OUT 783,RS:OUT 782,AH:OUT 781,C2:A=INP(780):GOTO 5085
5090 IF A<&H10 THEN PRINT" ";
5100 PRINT ;" ";HEX$(A);
5110 NEXT C2
5120 PRINT
5130 NEXT AL
5140 PRINT
5150 NEXT AH
5160 INPUT "press return";K$
5170 RETURN
10000 IF INP(783)<>RS THEN OUT 783,RS:OUT 782,AH:OUT 781,AL:A=INP(780):GOTO 1000
0
10010 RETURN

기록을 위한 APPLEII F ROM

APPLE-F.ROM

'◆ APPLE II' 카테고리의 다른 글

APPLE][와 IBM FDD  (0) 2013.07.20
APPLE2용 SD Memory Emulator를 위하여  (0) 2012.05.14
SN76489  (0) 2012.04.22
APPLE2+의 CPU를 65C02CPU로 교체  (0) 2012.04.21
CPU를 바꿀까?  (0) 2012.04.17
Posted by 이안김
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함