애플원 사용설명서 2011. 6 1
목차 1. 특징 1.1 애플원의 의미 1.2 APPLE-1 이란 무엇인가? 1.3 APPLE-1 구조 1.4 APPLE-1 과 애플원의 차이점. 1.5 애플원 Block Diagram 2. 사양 및 입출력 설명 2.1 사양 2.2 보드 입출력 설명 3. 애플원 사용법. 3.1 애플원 설치하기. 3.2 터미널 프로그램의 설정 및 사용법 3.2.1 Terminal setup 3.2.2 Serial port setup 3.2.3 Font setup 3.2.4 Window setup 3.2.5 파일 보내기 3.3 애플원 사용하기 3.3.1 애플원 사용 전에 알아야 할 점 3.3.2 모니터프로그램" 사용하기 3.4 Apple Basic 사용하기 4. 오류 메시지 부록 1 : 애플원 프로그램 ROM 내용 - WOZ MONITOR HEX LIST - WOZ BASIC HEX LIST - RAM MONITOR (RAM 의 $7F00~$7FFF 에 WOZMON 를 복제) HEX LIST 부록2 : APPLE-1 BASIC Manual 2
1. 특징 1.1 애플원의 의미 애플원은 1976 년도에 개발된 세계 최초의 Personal Computer 인 Apple-1 을 최대한 당시 설계의도에 충실하면서도, 현재의 제작, 사용 환경에서 사용자가 사용하기에 편리하도록 재구성한 일종의 replica 컴퓨터 입니다. 여러분들은 이제 세계 최초의 PC 를 사용해 봄으로써 컴퓨터에 대한 새로운 시각을 가질 수 있을 것입니다. 1.2 APPLE-1 이란 무엇인가? "APPLE-1"은 APPLE 사에서 1976 년도에 개발된 세계 최초의 Personal Computer 입니다. "APPLE-1"을 PC 라고 해서 현대의 Windows OS 에서 동작하는 PC 로 생각해서는 안됩니다. 여러 개의 토글스위치(Toggle Switch)와 램프(Lamp)가 가득한 제어판을 가진 중후한 본체에 전원을 넣으면, 복잡한 계산을 하도록 정해진 한가지의 프로그램을 실행하고 종료하도록 되어 있는, 다소 허무한 모습에서 출발하여, 수백 장의 펀치카드를 읽어, 그것에 기록된 프로그램을 실행하도록 되어 있는 장치를 거쳐, 컴퓨터(사실은 본체는 따로 있고, 단말기의 모습 만 보면)는 TEXT-IN, TEXT-OUT 의 전동타자기 또는 텔레타이프와 비슷한 모양처럼 되어, 사람과 소통하겠다는 자세를 갖춘 것처럼 보이게 되었습니다. 중앙처리장치(CPU)가 한 개의 반도체 칩(Chip) 속에 들어가게 되면서, 7 SEGMENT LED 에 숫자와 몇 자의 영문자를 표시할 수 있도록 만든 출력장치와 몇 개의 버튼스위치를 입력장치로 하는, 현재의 Starter-Kit 처럼 보이는 Board-Com 등의 시도가 이어졌습니다. 이즈음, 텔레타이프의 자판 모양의 Key-Board 를 입력장치로 하고, 당시, 이미 보편화되었던 TV 용 MONITOR 를 출력장치로 사용하는 개인용 컴퓨터가 최초로 고안되었는데, 이것이 바로 Apple 사의 Apple-1 입니다. Windows 로 대표되는 GUI(graphical user interfaces)의 혜택이 있기까지, 컴퓨터는 여러 가지 프로그램 언어의 개발, CPU 속도의 향상, Memory 용량 증가와 가격의 하락, 기타 주변기기의 개발 등으로 성능이 개선되었으나, TEXT-IN, TEXT-OUT 을 기본으로 하는, Apple-1 의 전형을 벗어나지 못 했으며, GUI 이후의 PC 도 결과적으로는 Apple-1 의 개량품에 불과 합니다.. 3
1.3 APPLE-1 구조 "APPLE-1"은 "Woz Monitor"라는 이름으로 널리 알려진, '모니터'에 의해 사용자와 인터페이스를 합니다. 여기서, '모니터'라 함은 TV 나 PC monitor 같은 디스플레이장치가 아니고, 컴퓨터 시스템을 감시 제어하는, '모니터 프로그램'이란 뜻으로, 조금 확대 해석하면 현재의 OS 에 해당한다고 말할 수 있겠습니다. "Woz Monitor"는 256 Byte 크기의 실행코드로서, 개발자인 Steve Wozniak (Stephen Gary Wozniak )의 이름을 따서 "Woz Monitor"라고 부르게 되었습니다. ( Steve Jobs(Steven Paul Jobs)와 Steve Wozniak 은 Apple 사의 공동설립자입니다. ) "Woz Monitor"는 메모리의 내용을 읽고, 메모리의 내용을 바꾸고, 원하는 번지에서 프로그램을 실행하게 함으로써 사용자에게 필요한 모든 사항을 가능하게 해줍니다. (사실 우리가 컴퓨터를 가지고 하는 일은 이게 전부라고 할 수 있습니다..) 실제로 당시에는 메모리(특히, ROM) 가격이 워낙 비쌌으므로, (실제로 당시 다른 컴퓨터 들은 몇 개의 토글스위치로 0 과 1 을 표현해서 Rom 을 대신했습니다.) APPLE-1 에는 2 개의 Chip 으로 구성된 256Byte 의 Rom 과 16 개의 Chip 으로 구성된 8 Kbyte 의 Ram 으로 구성되어 있었습니다. APPLE-1 의 HID(인간소통장치)는 문자입력을 위한 약간 투박한 모습의 Key Board 와 문자출력을 위해 흑백 TV monitor 에 40 자 * 24 줄의 문자를 보여 줄 수 있는 것이 전부였습니다. APPLE-1 이 지금은 비록 하찮아 보일지 모르지만 당시로서는 매우 획기적인 기기였으며 집 한 채 값에 해당하는 고가품 이었습니다. 1.4 "APPLE-1"과 "애플원"의 차이점. 애플원 APPLE-1 ================================================== - DISPLAY Serial Terminal (PC) TV Monitor - KBDPS2 KBD 자체 Parallel KBD - AUX. STORAGEPC FILE via Terminal CASSETTE-IF - MEM MAP $0000 4K RAM 4K RAM $1000 4K RAM 4K RAM (not used) $2000 4K RAM not used $3000 4K RAM not used $4000 4K RAM not used $5000 4K RAM not used $6000 4K RAM not used $7000 4K RAM not used $8000 not used not used 4
$9000 not used not used $A000 4K USER 4K USER $B000 4K USER 4K USER $C000 4K USER 4K USER $D000 DSP&KBD 보조 u-c MC6820 PIA I/O Control $E000 4k ROM BASIC not used (4K RAM) $F000 4K ROM not used $FF00 (256B WOZ-MON) 256B ROM WOZ-MON 1.5 애플원 Block Diagram Card Slot USB to RS232 Converter PS2 Connector Micro Processor (R6502) AT82E54AE2 (Micro Conteroller) EPM3064ALC44 PC RAM (HM62256) ROM (28C256) PS2 Keyboard 그림 1.5.1) 애플원 보드 블록도 PS2 Keyboard MPC82E54 MegaWin for Key-IN USB-Serial CP2102 SiLab for Key-IN & Display SUB-uC MPC82E54 MegaWin for Key-IN & Display A1-SUB- uc IF EPM3064 Altera for Apple-1: Sub-uC Interface 5
2. 사양 및 입출력 설명 2.1 사양 그림 2.1) 애플원 보드 보드 사이즈 :메인보드:149.8X119.3mm 전원: -DC 9V~12VDC CPU: Rockwell(Synertek) 6502 System-Clock: 1.84328 MHZ RAM Memory: 32 KB SRAM standard ROM Memory: 32 KB EEPROM (PGM: 4KB+256B) Keyboard: PS2 SERIAL PORT: USB CP2102 (115200BAUD) Expansion connector: Apple-1 compatible 6
2.2 보드 입출력 설명 그림 2.2) 보드 입출력 A) CPU RESET SWITCH - 애플원의 CPU 인 R6502 를 RESET 시키는 스위치 입니다. B) PS2 CONNECTOR - PS2 KEYBOARD 를 꽂는 곳 입니다. C) POWER CONNECTOR - POWER JACK 을 꽂는 곳 입니다. 동봉된 DC9V 아답터를 꽂습니다. D) POWER SWITCH - 전원을 ON/OFF 하는 스위치 입니다. E) USB CONNECTOR - PC 와 USB CABLE 을 이용해서 연결합니다. F) SWITCH 1 - OPTION 스위치 입니다. 그림 2.1)처럼 스위치를 위쪽으로 위치시킵니다. 7
G) SWITCH 2 - OPTION 스위치 입니다. 그림 2.1)처럼 스위치를 아래쪽으로 위치 시킵니다. H) SWITCH 3 - RESERVED 스위치 입니다. I) SWITCH 4 - RESERVED 스위치 입니다. J) MCU RESET - MCU RESET 스위치 입니다. 82E52 를 RESET 시킵니다. K) CARD SLOT1, CARD SLOT2, CARD SLOT3 - CARD 를 꽂는 곳입니다. CARD SLOT3 만 사용합니다. L) Jumper Setting CJP7, CJP8, CJP9 : 1 번과 2 번이 쇼트되도록 Jumper 를 꽂습니다 EJP4 : 1 번과 2 번이 쇼트되도록 Jumper 를 꽂습니다 XJP3 : 평상시에는 open 이며 ROM 에 데이터를 Write 할 경우나 BASIC Program 을 복구할 경우에만 쇼트되도록 Jumper 를 꽂습니다 또한 복구가 완료되면 반드시 이 Jumper 는 다시 open 상태로 되돌려 놓습니다 8
3. 애플원 사용법 3.1 애플원 설치하기. 1) 애플원에 키보드를 꽂습니다. 2) 애플원에 USB Cable 을 꽂아 PC 와 연결합니다. 3) POWER 을 꽂습니다. 4) TERA TERM 을 실행시킵니다. 5) 파워를 켜고 애플원을 사용합니다. 3.2 터미널 프로그램의 설정 및 사용법 애플원에서는 그림 1.5.1) 에 나와있듯이 PC 터미널 프로그램을 이용하여 모니터 역할을 하게 되어있습니다. 따라서 애플원을 사용하기 위해서는 PC 용 터미널 프로그램이 필수 인데 여기서는 PC 용 터미널 프로그램 중에 하나인 Tera term 을 이용하는 방법을 알아보겠습니다. (Tera Term 은 Tera Term 사이트 http://en.sourceforge.jp/에서 무료로 다운이 가능합니다.) 3.2.1 Terminal setup Tera Term 의 상단 윈도우 창에서 Setup => Terminal 을 누릅니다. 그림 3.2.1)과 같은 Terminal setup 창이 뜨면 그림처럼 설정합니다. - Terminal size : 40 X 24 로 설정합니다 -Receive 를 CR+LF, Transmit CR 로 설정합니다. - Coding(receive) : KS5601 로 설정합니다 (이 설정으로 한글이 지원됩니다) 그림 3.2.1) Terminal 창의 설정 ( Setup ==> Terminal 를 누릅니다.) 9
3.2.2 Serial port setup Tera Term 의 상단 윈도우 창에서 Setup => Serial port 를 누릅니다. 그림 3.2.2)과 같은 Serial port setup 창이 뜨면 그림처럼 설정합니다. Port: 사용자에 PC 에 따라 달라집니다. 본인의 PC 에 잡힌 com port 번호를 설정합니다. -Baud rate: 115200, Data: 8 bit, Parity: none, Stop: 1 bit 로 설정합니다. -Flow control: hardware 로 설정합니다. -Transmit delay: 1msec/line 으로 설정합니다. 그림 3.2.2) serial port 의 설정 ( Setup ==> serial port 를 누릅니다.) 3.2.3 Font setup Tera Term 의 상단 윈도우 창에서 Setup => Font 를 누릅니다. 그림 3.2.3)과 같은 Font setup 창이 뜨면 그림처럼 설정합니다..- 글꼴 : 한글의 글꼴을 선택합니다. I 와 L 의 소문자 l 의 명확한 구분을 위해 바탕체를 권합니다 - 글꼴 스타일과 크기 : 스타일은 보통으로, 크기는 모니터의 해상도에 따라 적절한 크기를 설정합니다 그림 3.2.3) Font 의 설정 ( Setup ==> Font 를 누릅니다.) 10
3.2.4 Window setup Tera Term 의 상단 윈도우 창에서 Setup => Window 를 누릅니다. 그림 3.2.4)과 같은 Window setup 창이 뜨면 그림처럼 설정합니다.. - TEXT Color 설정 : 그림 3.2.4) Window Text Color 설정 에서 보시는 바와 같이 하단의 Color 부분에서 TEXT 를 선택한 후 R(Red) 와 B(Blue) 를 0 으로 설정합니다. 이 상태가 되면 TEXT 색상이 Green 으로 변경됩니다. - Background Color 설정 : 그림 3.2.5) Window Background Color 설정 에서 보시는 바와 같이 하단의 Color 부분에서 Background 를 선택한 후 R(Red), G(Green), B(Blue) 를 모두 0 으로 설정합니다. 이 상태가 되면 배경색상이 검정으로 변경됩니다. 그림3.2.4) Window Text Color 설정 그림3.2.5) Window Background Color 설정 3.2.5 파일 보내기 이미 작성된 프로그램을 터미널로 보낼 경우에는 File ==> File Send 로 파일을 보내면 됩니다. 11
3.3 애플원 사용하기 3.3.1 애플원 사용 전에 알아야 할 점 1) 원래 "Apple-1"은 자동 리셋 회로가 없어서, 사용자가 리셋 스위치를 눌러야 했지만 (우연히 전원투입 시 리셋이 되는 경우도 있습니다), "애플원"은 Power-On Reset 기능이 있습니다. 전원을 켜고, 리셋을 하면, '\'(역슬래시)가 나오고 그 다음 줄에 '@'(커머셜 앹:"애플원"에서 는 터미널의 '커서')이 나오는데, 이것이 커서이고 Woz Monitor 가 동작한다는 의미 입니다. 2) 이제 컴퓨터가 메모리번지, 데이터 내용이나 명령을 입력하고 리턴[엔터]하면, 애플원은 이제 명령을 실행할 준비가 되었습니다. 지금은 당연시 되는 문서편집기능 들이 없어서 오타가 나지 않도록 조심해야 합니다. 백스페이스 기능이 있기는 하나, 화면에서는 지워지지 않으므로, 몇 자를 지웠는지를 사용자가 세어서 잘 기억해 두어야 합니다. 3) 리턴(엔터)를 누르지 않고 127 자 이상의 문자를 입력하면, 그 줄이 지워지고, '\'이 다시 나옵니다. 이렇게 되면 입력을 다시 시작해야 합니다. 'Esc' KEY 는 '입력취소'입니다. 번지수 입력은 4 자, 데이터 입력은 2 자이고, 모자라면, 앞에 '0'이 추가되고, 넘치면, 뒤에서부터 필요한 자릿수만큼만 사용됩니다. 4) 터미널로부터 [Ctrl-D], 키보드로부터 [F11] 받으면, WOZ-BASIC 에서 자동 행 번호 모드가 해제됩니다. 5) 터미널로부터 [Ctrl-R], 키보드로부터 [Ctrl-Alt-Del] 받으면, 6502(CPU)가 리셋됩니다.. 6) 터미널로부터 [Ctrl-C], 키보드로부터 [F12] 받으면, 터미널 화면이 초기화 됩니다. 7) Apple-1(ORIGINAL)에 없는 특수 KEY(추가). - 터미널로부터 [Ctrl-E], 키보드로부터 [F1] 받으면 "도우미 모드"로 들어 갑니다. "도우미 모드"에서는 ROM($8000~$FEFF 중, $D000~$DFFF 제외)에 DATA 또는 Program 을 보낼 수 있습니다. 8) 터미널로부터 [Ctrl-A], 키보드로부터 [F2] 받으면, "애플 모드"로 돌아옵니다. 9) 터미널로부터 [Ctrl-B], 키보드로부터 [F3] 받으면, "애플 베이직"을 복구합니다. "애플 베이직"을 복구(혹시, 파괴되었을 때)한다는 것은, "도우미 모드"로 만들고, ROM($E000~$EFFF)에 애플 베이직을 LOAD 한다는 의미 입니다.. - 이 경우 반드시 XJP3 를 쇼트되도록 Jumper 를 꽂습니다 12
- 복구가 완료되면 반드시 이 Jumper 는 다시 open 상태로 되돌려 놓습니다 - 복구과정은 터미널로부터 [Ctrl-B], 키보드로부터 [F3] 받으면, 모니터에 다음과 같은 안내문이 나오고 이 때 Send File 기능을 이용하여 Woz_Basic,txt 파일을 보내면 복구과정을 실행한 후 EFF8: E0 라는 문구가 뜨면 복구과정이 완료된 것입니다 10) 터미널로부터 [Ctrl-I], 키보드로부터 [F4] 받으면, --이 HELP-TEXT 를 보여주는, "HELP MODE"로 들어 갑니다. --"HELP MODE"에서, 다시 --터미널로부터 [Ctrl-I], 키보드로부터 [F4] 받으면, --"애플 모드"로 돌아옵니다.. 3.3.2 "모니터프로그램" 사용하기. "애플원 사용하기"란, 바로 "모니터프로그램 사용하기"입니다. 1) 메모리 내용 확인하기. 1)user: 4F[엔터] system: 004F: 0F [_] --메모리의 0x004F 번지의 내용이 0x0F 라는 의미입니다. 2)user:.5A[엔터] system: 0050: 00 01 02 03 04 05 06 07 0058: 08 09 0A [_] 3)user: 4F.5A[엔터] system: 004F: 0F 0050: 00 01 02 03 04 05 06 07 0058: 08 09 0A [_] 4)user: 4F 52 56[엔터] system: 004F: 0F 13
0052: 02 0056: 06 [_] 5)user: 4F.52 56 58.5A[엔터] system: 004F: 0F 0050: 00 01 02 0056: 06 0058: 08 09 0A [_] 2) 메모리 내용 수정하기. 1)user: 30:A0[엔터] system: 0030: FF [_] --메모리의 0x0030 번지의 내용을 0xA0 로 수정하라는 명령입니다. --메모리의 0x0030 번지의 내용이 수정 전, 0xFF 이었다는 의미입니다. 2)user: :A1 A2 A3 A4 A5[엔터] system: 0031: FF [_] --메모리의 0x0031 번지의 내용을 0xA1 로 수정하라는 명령입니다. 메모리의 0x0032 번지의 내용을 0xA2 로 수정하라는 명령입니다. 메모리의 0x0033 번지의 내용을 0xA3 로 수정하라는 명령입니다. 메모리의 0x0034 번지의 내용을 0xA4 로 수정하라는 명령입니다. 메모리의 0x0035 번지의 내용을 0xA5 로 수정하라는 명령입니다. --메모리의 0x0031 번지의 내용이 수정 전, 0xFF 이었다는 의미입니다. 3)user: 30:A0 A1 A2 A3 A4 A5[엔터] system: 0030: FF [_] --메모리의 0x0030 번지의 내용을 0xA0 로 수정하라는 명령입니다. 메모리의 0x0031 번지의 내용을 0xA1 로 수정하라는 명령입니다. 메모리의 0x0032 번지의 내용을 0xA2 로 수정하라는 명령입니다. 메모리의 0x0033 번지의 내용을 0xA3 로 수정하라는 명령입니다. 메모리의 0x0034 번지의 내용을 0xA4 로 수정하라는 명령입니다. 메모리의 0x0035 번지의 내용을 0xA5 로 수정하라는 명령입니다. --메모리의 0x0030 번지의 내용이 수정 전, 0xFF 이었다는 의미입니다. 4)user: 30:A0 A1[엔터] system: 0030: FF user: :A2 A3[엔터] user: :A4 A5[엔터] 14
[_] --메모리의 0x0030 번지의 내용을 0xA0 로 수정하라는 명령입니다. 메모리의 0x0031 번지의 내용을 0xA1 로 수정하라는 명령입니다. --메모리의 0x0030 번지의 내용이 수정 전, 0xFF 이었다는 의미입니다. --메모리의 0x0032 번지의 내용을 0xA2 로 수정하라는 명령입니다. 메모리의 0x0033 번지의 내용을 0xA3 로 수정하라는 명령입니다. --메모리의 0x0034 번지의 내용을 0xA4 로 수정하라는 명령입니다. 메모리의 0x0035 번지의 내용을 0xA5 로 수정하라는 명령입니다. 5)user: 30.35[엔터] system: 0030: A0 A1 A2 A3 A4 A5 user: :B0 B1 B2 B3 B4 B5[엔터] [_] --메모리의 0x0030 번지의 내용을 표시하라는 명령입니다. --메모리의 0x0030~35 번지의 내용이 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 이었다는 의미입니다. --메모리의 0x0030~35 번지의 내용을 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5 로 수정하라는 명령입니다. 3) 임의의 어드레스로부터 프로그램 실행하기. 1)user: 10F0R[엔터] system: 10F0: A9 [_] --메모리의 10F0 번지부터(있다고 가정하고) 프로그램을 실행하라는 명령입니다. --메모리의 10F0 번지의 프로그램 실행 전, 0xA9 이었다는 의미입니다. 커서[_]가 A9 바로 옆(다음 줄이 아니고,)에 있는 것은, 제어가 (사용자 프로그램으로부터)모니터 프로그램으로 돌아오지 않았다는 의미입니다. 모니터 프로그램으로의 귀환 어드레스는 0xFF1F. (JuMP$FF1F) 4) 짧은 프로그램을 입력과 동시에 실행하기. 1)user: 40: A9 0 20 EF FF 38 69 0 4C 40 0 R[엔터] system: 40: FF [_] --메모리의 0040 번지부터 A9 0 20 EF FF 38 69 0 4C 40 0 의 프로그램을 입력하고, 바로 실행하라는 명령입니다. --메모리의 0040 번지의 프로그램 실행 전, 0xFF 이었다는 의미입니다. 커서[_]가 0xFF 바로 옆(다음 줄이 아니고,)에 있는 것은, 제어가 (사용자 프로그램으로부터)모니터 프로그램으로 돌아오지 않았다는 의미입니다. 모니터 프로그램으로의 귀환 어드레스는 0xFF1F. (JuMP$FF1F) 15
5) 특수 번지수 -ZERO PAGE XAML $24 XAMH $25 STL $26 STH $27 L $28 H $29 YSAV $2A MODE $2B -STACK $0100-$01FF -INPUT BUFFER IN $0200-$027F -IO KBD $D010 KBDCR $D011 DSP $D012 DSPCR $D013 6) 유용한 루틴의 진입점(Entry Point). $FF1F GETLINE-WOZ MONITOR 의 진입점. $FFEF ECHO-ACC.의 문자를 화면에 출력. ACC.의 값은 유지. FLAG 는 변경. $FFDC PRBYTE-ACC.의 데이터를 화면에 16 진 2 문자로 출력. ACC.의 값, FLAG 는 변경. $FFE5 PRHEX-ACC.의 데이터 중 작은 쪽 4 비트(LS Nibble)를 화면에 16 진 1 문자로 출력. 7 ) 사용자가 자신의 기계어 프로그램에서, 키보드로부터 1 개의 문자를 입력 받고 싶다면 다음 구절을 자신의 프로그램에 삽입하면 됩니다.. KBDINLDA KBDCR ; See if there is a character available BPL KBDIN ; Not as long as b7 remains low LDA KBD ; Get the character and clear the flag 8) 화면을 초기화하고 싶다면, 다음 구절을 자신의 프로그램에 삽입하면 됩니다. 원래 "Apple-1"의 화면초기화는 하드웨어 스위치로 되어 있는데, 애플원에서는 보조회로로 추가하여, CONTROL+"C"를 보내면, 화면을 클리어 하도록 만들어 습니다. CLRSCRLDA #$03; #$03 = Cntrl-C JSRECHO; ECHO = $FFEF 16
3.4 Apple Basic 사용하기 "Apple Basic"하면, "Apple-II"용의 "AppleSof"와 "Apple-1"용의 "WOZ BASIC"을 모두 의미할 수도 있는데, 여기서는 당연히 "Apple-1"용의 "WOZ BASIC"을 의미합니다, 만일 이 컴퓨터가 원래의 "Apple-1"이었다면, "Apple-1 Basic(WOZ BASIC)"은 말할 것도 없이, 실행 전에 미리 카세트 테이프로부터 메모리의 $E000~$EFFF 에 LOAD 되어 있어야 하지만, "애플원"에서는 ROM 의 $E000~$EFFF 에 미리 저장되어 있으므로 따로 LOAD 할 필요가 없습니다. 즉, "모니터프로그램" 실행 상태(전원을 바로 켠 상태)에서 E000R[엔터] 하면, user: E000R[엔터] system: E000: 4C system: > 와 같이, 바로 "베이직" 실행 상태로 전환됩니다. 이제 우리는 "베이직" 명령들을 실행할 수 있게 된 것입니다. $E000 는 "베이직" INTERPRETER 의 "Cold 진입점(Entry Point)" 이라고 합니다. 차가운 상태(전원차단)에서 바로 전원을 켠 것처럼 모든 변수를 초기화한 후 실행한다는 의미로 "Cold 진입점"이라 합니다. 참조: INTERPRETER 란 "PASCAL", "C"등 언어의 컴파일러처럼 컴파일 해서, 기계어 프로그램을 만들어, 그것을 실행하는 것이 아니고, 소스코드를 한 줄 한 줄씩 읽어 해석해 가면서 실행해 주는 프로그램 입니다. $E2B3 는 "베이직" INTERPRETER 의 "Warm 진입점(Entry Point)" 이라고 합니다. 사용자가 어떤 이유에서, "모니터프로그램"으로 빠져 나갔다가, 데이터(변수 등)를 잃지 않고 "베이직"으로 돌아오고 싶다면, E2B3R[엔터] 하면, user: E2B3R[엔터] system: E2B3: 20 system: > 와 같이, "베이직"으로 돌아옵니다. "모니터프로그램"에서 의도적으로 메모리 내용을 변경하지 않았다면, 모든 변수는 그대로일 것입니다. "베이직" 실행 상태에서 "모니터프로그램"으로 빠져 나가는 방법은 "리셋" 스위치를 누르면 됩니다. "리셋" 스위치를 누르면, 바로 "모니터프로그램"이 실행되는데, "Woz Monitor"는 메모리를 거의 초기화하지 않으므로("베이직"과 관계없는 극히 일부만 사용.), "베이직" 프로그램은 잃지 않고, "모니터프로그램"으로 빠져 나갈 수 있습니다. "베이직" 언어에 대한 자세한 내용은 "Apple-1 Basic Manual"을 참조하시길 바랍니다. 17
4. 오류 메시지 SYNTAX 구문오류 및 타이핑 오류입니다. >32767 ERR 입력 또는 계산된 값이 -32767 이나 32767 보다 클 경우 입니다. >255 ERR0 0 에서 255 까지의 범위로 제한되어야 하나 그 밖의 값이 나온 경우 입니다. BAD BRANCH ERR 존재하지 않는 line number 로 이동하도록 프로그램 되었을 경우입니다 BAD RETURN ERR 이전에 실행된 GOSUB 보다 RETURN 이 많을 경우입니다. BAD NEXT ERRFOR 구문에서 선언한 변수가 아니고 다른 변수를 사용한 경우입니다 >8 GOSUBS ERR 8 개 이상의 중첩된 GOSUB 을 사용한 경우입니다. >8 FORS ERR 8 개 이상의 중첩된 FOR 을 사용한 경우입니다. END ERR 마지막 문장에 END 가 없는 경우입니다. MEM FULL ERR 프로그램에 필요한 메모리가 할당된 메모리를 초과한 경우입니다. TOO LONG ERR 너무 많은 중첩된 괄호를 사용한 경우 결과를 얻을 수 없는 경우입니다. DIM ERR 이전에 이미 정의된 배열을 다시 정의하고자 한 경우입니다. RANG ERR 배열 또는 문자열 subscript 가 DIM 에서 정의된 값보다 크거나 1 보다 작을 경우입니다. STR OVFL ERR 문자열로 지정된 문자의 개수가 해당 문자열에 정의된 값을 초과한 경우입니다. STRING ERR 구문 사용법에 맞지 않는 문자열 작업을 실행하게 된 경우입니다 RETYPE LINE input statement 의 사용시 적합하지 않은 데이터를 받은 경우입니다. 18
부록 1 : 애플원 프로그램 ROM 내용 -WOZ MONITOR HEX LIST FF00: D8 58 A0 7F 8C 12 D0 A9 A7 8D 11 D0 8D 13 D0 C9 DF F0 13 C9 9B F0 03 C8 10 0F A9 DC 20 EF FF A9 FF20: 8D 20 EF FF A0 01 88 30 F6 AD 11 D0 10 FB AD 10 D0 99 00 02 20 EF FF C9 8D D0 D4 A0 FF A9 00 AA FF40: 0A 85 2B C8 B9 00 02 C9 8D F0 D4 C9 AE 90 F4 F0 F0 C9 BA F0 EB C9 D2 F0 3B 86 28 86 29 84 2A B9 FF60: 00 02 49 B0 C9 0A 90 06 69 88 C9 FA 90 11 0A 0A 0A 0A A2 04 0A 26 28 26 29 CA D0 F8 C8 D0 E0 C4 FF80: 2A F0 97 24 2B 50 10 A5 28 81 26 E6 26 D0 B5 E6 27 4C 44 FF 6C 24 00 30 2B A2 02 B5 27 95 25 95 FFA0: 23 CA D0 F7 D0 14 A9 8D 20 EF FF A5 25 20 DC FF A5 24 20 DC FF A9 BA 20 EF FF A9 A0 20 EF FF A1 FFC0: 24 20 DC FF 86 2B A5 24 C5 28 A5 25 E5 29 B0 C1 E6 24 D0 02 E6 25 A5 24 29 07 10 C8 48 4A 4A 4A FFE0: 4A 20 E5 FF 68 29 0F 09 B0 C9 BA 90 02 69 06 2C 12 D0 30 FB 8D 12 D0 60 00 00 00 0F 00 FF 00 00 -WOZ BASIC HEX LIST E000: 4C B0 E2 AD 11 D0 10 FB AD 10 D0 60 8A 29 20 F 023 A9 A0 85 E4 4C C9 E3 A9 20 C5 24 B0 0C A9 8D E020: A0 07 20 C9 E3 A9 A0 88 D0 F8 A0 00 B1 E2 E6 E2 D0 02 E6 E3 60 20 15 E7 20 76 E5 A5 E2 C5 E6 A5 E040: E3 E5 E7 B0 EF 20 6D E0 4C 3B E0 A5 CA 85 E2 A5 CB 85 E3 A5 4C 85 E6 A5 4D 85 E7 D0 DE 20 15 E7 E060: 20 6D E5 A5 E4 85 E2 A5 E5 85 E3 B0 C7 86 D8 A9 A0 85 FA 20 2A E0 98 85 E4 20 2A E0 AA 20 2A E0 E080: 20 1B E5 20 18 E0 84 FA AA 10 18 0A 10 E9 A5 E4 D0 03 20 11 E0 8A 20 C9 E3 A9 25 20 1A E0 AA 30 E0A0: F5 85 E4 C9 01 D0 05 A6 D8 4C CD E3 48 84 CE A2 ED 86 CF C9 51 90 04 C6 CF E9 50 48 B1 CE AA 88 E0C0: B1 CE 10 FA E0 C0 B0 04 E0 00 30 F2 AA 68 E9 01 D0 E9 24 E4 30 03 20 F8 EF B1 CE 10 10 AA 29 3F E0E0: 85 E4 18 69 A0 20 C9 E3 88 E0 C0 90 EC 20 0C E0 68 C9 5D F0 A4 C9 28 D0 8A F0 9E 20 18 E1 95 50 E100: D5 78 90 11 A0 2B 4C E0 E3 20 34 EE D5 50 90 F4 20 E4 EF 95 78 4C 23 E8 20 34 EE F0 E7 38 E9 01 E120: 60 20 18 E1 95 50 18 F5 78 4C 02 E1 A0 14 D0 D6 20 18 E1 E8 B5 50 85 DA 65 CE 48 A8 B5 78 85 DB E140: 65 CF 48 C4 CA E5 CB B0 E3 A5 DA 69 FE 85 DA A9 FF A8 65 DB 85 DB C8 B1 DA D9 CC 00 D0 0F 98 F0 E160: F5 68 91 DA 99 CC 00 88 10 F7 E8 60 EA A0 80 D0 95 A9 00 20 0A E7 A0 02 94 78 20 0A E7 A9 BF 20 E180: C9 E3 A0 00 20 9E E2 94 78 EA EA EA B5 51 85 CE B5 79 85 CF E8 E8 20 BC E1 B5 4E D5 76 B0 15 F6 E1A0: 4E A8 B1 CE B4 50 C4 E4 90 04 A0 83 D0 C1 91 DA F6 50 90 E5 B4 50 8A 91 DA E8 E8 60 B5 51 85 DA E1C0: 38 E9 02 85 E4 B5 79 85 DB E9 00 85 E5 A0 00 B1 E4 18 E5 DA 85 E4 60 B5 53 85 CE B5 7B 85 CF B5 E1E0: 51 85 DA B5 79 85 DB E8 E8 E8 A0 00 94 78 94 A0 C8 94 50 B5 4D D5 75 08 48 B5 4F D5 77 90 07 68 E200: 28 B0 02 56 50 60 A8 B1 CE 85 E4 68 A8 28 B0 F3 B1 DA C5 E4 D0 ED F6 4F F6 4D B0 D7 20 D7 E1 4C E220: 36 E7 20 54 E2 06 CE 26 CF 90 0D 18 A5 E6 65 DA 85 E6 A5 E7 65 DB 85 E7 88 F0 09 06 E6 26 E7 10 E240: E4 4C 7E E7 A5 E6 20 08 E7 A5 E7 95 A0 06 E5 90 28 4C 6F E7 A9 55 85 E5 20 5B E2 A5 CE 85 DA A5 E260: CF 85 DB 20 15 E7 84 E6 84 E7 A5 CF 10 09 CA 06 E5 20 6F E7 20 15 E7 A0 10 60 20 6C EE F0 C5 FF E280: C9 84 D0 02 46 F8 C9 DF F0 11 C9 9B F0 06 99 00 02 C8 10 0A A0 8B 20 C4 E3 A0 01 88 30 F6 20 03 E2A0: E0 EA EA 20 C9 E3 C9 8D D0 D6 A9 DF 99 00 02 60 20 D3 EF 20 CD E3 46 D9 A9 BE 20 C9 E3 A0 00 84 E2C0: FA 24 F8 10 0C A6 F6 A5 F7 20 1B E5 A9 A0 20 C9 E3 A2 FF 9A 20 9E E2 84 F1 8A 85 C8 A2 20 20 91 E2E0: E4 A5 C8 69 00 85 E0 A9 00 AA 69 02 85 E1 A1 E0 29 F0 C9 B0 F0 03 4C 83 E8 A0 02 B1 E0 99 CD 00 E300: 88 D0 F8 20 8A E3 A5 F1 E5 C8 C9 04 F0 A8 91 E0 A5 CA F1 E0 85 E4 A5 CB E9 00 85 E5 A5 E4 C5 CC E320: A5 E5 E5 CD 90 45 A5 CA F1 E0 85 E6 A5 CB E9 00 85 E7 B1 CA 91 E6 E6 CA D0 02 E6 CB A5 E2 C5 CA 19
E340: A5 E3 E5 CB B0 E0 B5 E4 95 CA CA 10 F9 B1 E0 A8 88 B1 E0 91 E6 98 D0 F8 24 F8 10 09 B5 F7 75 F5 E360: 95 F7 E8 F0 F7 10 7E 00 00 00 00 A0 14 D0 71 20 15 E7 A5 E2 85 E6 A5 E3 85 E7 20 75 E5 A5 E2 85 E380: E4 A5 E3 85 E5 D0 0E 20 15 E7 20 6D E5 A5 E6 85 E2 A5 E7 85 E3 A0 00 A5 CA C5 E4 A5 CB E5 E5 B0 E3A0: 16 A5 E4 D0 02 C6 E5 C6 E4 A5 E6 D0 02 C6 E7 C6 E6 B1 E4 91 E6 90 E0 A5 E6 85 CA A5 E7 85 CB 60 E3C0: 20 C9 E3 C8 B9 00 EB 30 F7 C9 8D D0 06 A9 00 85 24 A9 8D E6 24 2C 12 D0 30 FB 8D 12 D0 60 A0 06 E3E0: 20 D3 EE 24 D9 30 03 4C B6 E2 4C 9A EB 2A 69 A0 DD 00 02 D0 53 B1 FE 0A 30 06 88 B1 FE 30 29 C8 E400: 86 C8 98 48 A2 00 A1 FE AA 4A 49 48 11 FE C9 C0 90 01 E8 C8 D0 F3 68 A8 8A 4C C0 E4 E6 F1 A6 F1 E420: F0 BC 9D 00 02 60 A6 C8 A9 A0 E8 DD 00 02 B0 FA B1 FE 29 3F 4A D0 B6 BD 00 02 B0 06 69 3F C9 1A E440: 90 6F 69 4F C9 0A 90 69 A6 FD C8 B1 FE 29 E0 C9 20 F0 7A B5 A8 85 C8 B5 D1 85 F1 88 B1 FE 0A 10 E460: FA 88 B0 38 0A 30 35 B4 58 84 FF B4 80 E8 10 DA F0 B3 C9 7E B0 22 CA 10 04 A0 06 10 29 94 80 A4 E480: FF 94 58 A4 C8 94 A8 A4 F1 94 D1 29 1F A8 B9 20 EC 0A A8 A9 76 2A 85 FF D0 01 C8 C8 86 FD B1 FE E4A0: 30 84 D0 05 A0 0E 4C E0 E3 C9 03 B0 C3 4A A6 C8 E8 BD 00 02 90 04 C9 A2 F0 0A C9 DF F0 06 86 C8 E4C0: 20 1C E4 C8 88 A6 FD B1 FE 88 0A 10 CF B4 58 84 FF B4 80 E8 B1 FE 29 9F D0 ED 85 F2 85 F3 98 48 E4E0: 86 FD B4 D0 84 C9 18 A9 0A 85 F9 A2 00 C8 B9 00 02 29 0F 65 F2 48 8A 65 F3 30 1C AA 68 C6 F9 D0 E500: F2 85 F2 86 F3 C4 F1 D0 DE A4 C9 C8 84 F1 20 1C E4 68 A8 A5 F3 B0 A9 A0 00 10 8B 85 F3 86 F2 A2 E520: 04 86 C9 A9 B0 85 F9 A5 F2 DD 63 E5 A5 F3 FD 68 E5 90 0D 85 F3 A5 F2 FD 63 E5 85 F2 E6 F9 D0 E7 E540: A5 F9 E8 CA F0 0E C9 B0 F0 02 85 C9 24 C9 30 04 A5 FA F0 0B 20 C9 E3 24 F8 10 04 99 00 02 C8 CA E560: 10 C1 60 01 0A 64 E8 10 00 00 00 03 27 A5 CA 85 E6 A5 CB 85 E7 E8 A5 E7 85 E5 A5 E6 85 E4 C5 4C E580: A5 E5 E5 4D B0 26 A0 01 B1 E4 E5 CE C8 B1 E4 E5 CF B0 19 A0 00 A5 E6 71 E4 85 E6 90 03 E6 E7 18 E5A0: C8 A5 CE F1 E4 C8 A5 CF F1 E4 B0 CA 60 46 F8 A5 4C 85 CA A5 4D 85 CB A5 4A 85 CC A5 4B 85 CD A9 E5C0: 00 85 FB 85 FC 85 FE A9 00 85 1D 60 A5 D0 69 05 85 D2 A5 D1 69 00 85 D3 A5 D2 C5 CA A5 D3 E5 CB E5E0: 90 03 4C 6B E3 A5 CE 91 D0 A5 CF C8 91 D0 A5 D2 C8 91 D0 A5 D3 C8 91 D0 A9 00 C8 91 D0 C8 91 D0 E600: A5 D2 85 CC A5 D3 85 CD A5 D0 90 43 85 CE 84 CF 20 FF E6 30 0E C9 40 F0 0A 4C 28 E6 06 C9 49 D0 E620: 07 A9 49 85 CF 20 FF E6 A5 4B 85 D1 A5 4A 85 D0 C5 CC A5 D1 E5 CD B0 94 B1 D0 C8 C5 CE D0 06 B1 E640: D0 C5 CF F0 0E C8 B1 D0 48 C8 B1 D0 85 D1 68 A0 00 F0 DB A5 D0 69 03 20 0A E7 A5 D1 69 00 95 78 E660: A5 CF C9 40 D0 1C 88 98 20 0A E7 88 94 78 A0 03 F6 78 C8 B1 D0 30 F9 10 09 A9 00 85 D4 85 D5 A2 E680: 20 48 A0 00 B1 E0 10 18 0A 30 81 20 FF E6 20 08 E7 20 FF E6 95 A0 24 D4 10 01 CA 20 FF E6 B0 E6 E6A0: C9 28 D0 1F A5 E0 20 0A E7 A5 E1 95 78 24 D4 30 0B A9 01 20 0A E7 A9 00 95 78 F6 78 20 FF E6 30 E6C0: F9 B0 D3 24 D4 10 06 C9 04 B0 D0 46 D4 A8 85 D6 B9 98 E9 29 55 0A 85 D7 68 A8 B9 98 E9 29 AA C5 E6E0: D7 B0 09 98 48 20 FF E6 A5 D6 90 95 B9 10 EA 85 CE B9 88 EA 85 CF 20 FC E6 4C D8 E6 6C CE 00 E6 E700: E0 D0 02 E6 E1 B1 E0 60 94 77 CA 30 03 95 50 60 A0 66 4C E0 E3 A0 00 B5 50 85 CE B5 A0 85 CF B5 E720: 78 F0 0E 85 CF B1 CE 48 C8 B1 CE 85 CF 68 85 CE 88 E8 60 20 4A E7 20 15 E7 98 20 08 E7 95 A0 C5 E740: CE D0 06 C5 CF D0 02 F6 50 60 20 82 E7 20 59 E7 20 15 E7 24 CF 30 1B CA 60 20 15 E7 A5 CF D0 04 E760: A5 CE F0 F3 A9 FF 20 08 E7 95 A0 24 CF 30 E9 20 15 E7 98 38 E5 CE 20 08 E7 98 E5 CF 50 23 A0 00 E780: 10 90 20 6F E7 20 15 E7 A5 CE 85 DA A5 CF 85 DB 20 15 E7 18 A5 CE 65 DA 20 08 E7 A5 CF 65 DB 70 E7A0: DD 95 A0 60 20 15 E7 A4 CE F0 05 88 A5 CF F0 0C 60 A5 24 09 07 A8 C8 A9 A0 20 C9 E3 C4 24 B0 F7 E7C0: 60 20 B1 E7 20 15 E7 A5 CF 10 0A A9 AD 20 C9 E3 20 72 E7 50 EF 88 84 D5 86 CF A6 CE 20 1B E5 A6 E7E0: CF 60 20 15 E7 A5 CE 85 F6 A5 CF 85 F7 88 84 F8 C8 A9 0A 85 F4 84 F5 60 20 15 E7 A5 CE A4 CF 10 E800: F2 20 15 E7 B5 50 85 DA B5 78 85 DB A5 CE 91 DA C8 A5 CF 91 DA E8 60 68 68 24 D5 10 05 20 CD E3 E820: 46 D5 60 A0 FF 84 D7 60 20 CD EF F0 07 A9 25 85 D6 88 84 D4 E8 60 A5 CA A4 CB D0 5A A0 41 A5 FC E840: C9 08 B0 5E A8 E6 FC A5 E0 99 00 01 A5 E1 99 08 01 A5 DC 99 10 01 A5 DD 99 18 01 20 15 E7 20 6D 20
E860: E5 90 04 A0 37 D0 3B A5 E4 A4 E5 85 DC 84 DD 2C 11 D0 30 4F 18 69 03 90 01 C8 A2 FF 86 D9 9A 85 E880: E0 84 E1 20 79 E6 24 D9 10 49 18 A0 00 A5 DC 71 DC A4 DD 90 01 C8 C5 4C D0 D1 C4 4D D0 CD A0 34 E8A0: 46 D9 4C E0 E3 A0 4A A5 FC F0 F7 C6 FC A8 B9 0F 01 85 DC B9 17 01 85 DD BE FF 00 B9 07 01 A8 8A E8C0: 4C 7A E8 A0 63 20 C4 E3 A0 01 B1 DC AA C8 B1 DC 20 1B E5 4C B3 E2 C6 FB A0 5B A5 FB F0 C4 A8 B5 E8E0: 50 D9 1F 01 D0 F0 B5 78 D9 27 01 D0 E9 B9 2F 01 85 DA B9 37 01 85 DB 20 15 E7 CA 20 93 E7 20 01 E900: E8 CA A4 FB B9 67 01 95 9F B9 5F 01 A0 00 20 08 E7 20 82 E7 20 59 E7 20 15 E7 A4 FB A5 CE F0 05 E920: 59 37 01 10 12 B9 3F 01 85 DC B9 47 01 85 DD BE 4F 01 B9 57 01 D0 87 C6 FB 60 A0 54 A5 FB C9 08 E940: F0 9A E6 FB A8 B5 50 99 20 01 B5 78 99 28 01 60 20 15 E7 A4 FB A5 CE 99 5F 01 A5 CF 99 67 01 A9 E960: 01 99 2F 01 A9 00 99 37 01 A5 DC 99 3F 01 A5 DD 99 47 01 A5 E0 99 4F 01 A5 E1 99 57 01 60 20 15 E980: E7 A4 FB A5 CE 99 2F 01 A5 CF 4C 66 E9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 AB 03 03 03 03 E9A0: 03 03 03 03 03 03 03 03 03 03 3F 3F C0 C0 3C 3C 3C 3C 3C 3C 3C 30 0F C0 CC FF 55 00 AB AB 03 03 E9C0: FF FF 55 FF FF 55 CF CF CF CF CF FF 55 C3 C3 C3 55 F0 F0 CF 56 56 56 55 FF FF 55 03 03 03 03 03 E9E0: 03 03 FF FF FF 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 00 AB 03 57 03 03 03 03 07 03 03 EA00: 03 03 03 03 03 03 03 03 03 03 AA FF FF FF FF FF 17 FF FF 19 5D 35 4B F2 EC 87 6F AD B7 E2 F8 54 EA20: 80 96 85 82 22 10 33 4A 13 06 0B 4A 01 40 47 7A 00 FF 23 09 5B 16 B6 CB FF FF FB FF FF 24 F6 4E EA40: 59 50 00 FF 23 A3 6F 36 23 D7 1C 22 C2 AE BA 23 FF FF 21 30 1E 03 C4 20 00 C1 FF FF FF A0 30 1E EA60: A4 D3 B6 BC AA 3A 01 50 7E D8 D8 A5 3C FF 16 5B 28 03 C4 1D 00 0C 4E 00 3E 00 A6 B0 00 BC C6 57 EA80: 8C 01 27 FF FF FF FF FF E8 FF FF E8 E0 E0 E0 EF EF E3 E3 E5 E5 E7 E7 EE EF EF E7 E7 E2 EF E7 E7 EAA0: EC EC EC E7 EC EC EC E2 00 FF E8 E1 E8 E8 EF EB FF FF E0 FF FF EF EE EF E7 E7 00 FF E8 E7 E7 E7 EAC0: E8 E1 E2 EE EE EE EE E8 FF FF E1 E1 EF EE E7 E8 EE E7 FF FF FF EE E1 EF E7 E8 EF EF EB E9 E8 E9 EAE0: E9 E8 E8 E8 E8 FF E8 E8 E8 EE E7 E8 EF EF EE EF EE EF EE EE EF EE EE EE E1 E8 E8 FF FF FF FF FF EB00: BE B3 B2 B7 B6 37 D4 CF CF A0 CC CF CE 47 D3 D9 CE D4 C1 58 CD C5 CD A0 C6 D5 CC 4C D4 CF CF A0 EB20: CD C1 CE D9 A0 D0 C1 D2 C5 CE 53 D3 D4 D2 C9 CE 47 CE CF A0 C5 CE 44 C2 C1 C4 A0 C2 D2 C1 CE C3 EB40: 48 BE B8 A0 C7 CF D3 D5 C2 53 C2 C1 C4 A0 D2 C5 D4 D5 D2 4E BE B8 A0 C6 CF D2 53 C2 C1 C4 A0 CE EB60: C5 D8 54 D3 D4 CF D0 D0 C5 C4 A0 C1 D4 20 AA AA AA 20 A0 C5 D2 D2 0D BE B2 B5 35 D2 C1 CE C7 45 EB80: C4 C9 4D D3 D4 D2 A0 CF D6 C6 4C DC 0D D2 C5 D4 D9 D0 C5 A0 CC C9 CE C5 8D 3F 46 D9 90 03 4C C3 EBA0: E8 A6 CF 9A A6 CE A0 8D D0 02 A0 99 20 C4 E3 86 CE BA 86 CF A0 FE 84 D9 C8 84 C8 20 99 E2 84 F1 EBC0: A2 20 A9 30 20 91 E4 E6 D9 A6 CE A4 C8 0A 85 CE C8 B9 00 02 C9 74 F0 D2 49 B0 C9 0A B0 F0 C8 C8 EBE0: 84 C8 B9 00 02 48 B9 FF 01 A0 00 20 08 E7 68 95 A0 A5 CE C9 C7 D0 03 20 6F E7 4C 01 E8 FF FF FF EC00: 50 20 13 EC D0 15 20 0B EC D0 10 20 82 E7 20 6F E7 50 03 20 82 E7 20 59 E7 56 50 4C 36 E7 FF FF EC20: C1 FF 7F D1 CC C7 CF CE C5 9A 98 8B 96 95 93 BF B2 32 2D 2B BC B0 AC BE 35 8E 61 FF FF FF DD FB EC40: 20 C9 EF 15 4F 10 05 20 C9 EF 35 4F 95 50 10 CB 4C C9 EF 40 60 8D 60 8B 00 7E 8C 33 00 00 60 03 EC60: BF 12 00 40 89 C9 47 9D 17 68 9D 0A 00 40 60 8D 60 8B 00 7E 8C 3C 00 00 60 03 BF 1B 4B 67 B4 A1 EC80: 07 8C 07 AE A9 AC A8 67 8C 07 B4 AF AC B0 67 9D B2 AF AC AF A3 67 8C 07 A5 AB AF B0 F4 AE A9 B2 ECA0: B0 7F 0E 27 B4 AE A9 B2 B0 7F 0E 28 B4 AE A9 B2 B0 64 07 A6 A9 67 AF B4 AF A7 78 B4 A5 AC 78 7F ECC0: 02 AD A5 B2 67 A2 B5 B3 AF A7 EE B2 B5 B4 A5 B2 7E 8C 39 B4 B8 A5 AE 67 B0 A5 B4 B3 27 AF B4 07 ECE0: 9D 19 B2 AF A6 7F 05 37 B4 B5 B0 AE A9 7F 05 28 B4 B5 B0 AE A9 7F 05 2A B4 B5 B0 AE A9 E4 AE A5 ED00: 00 FF FF 47 A2 A1 B4 7F 0D 30 AD A9 A4 7F 0D 23 AD A9 A4 67 AC AC A1 A3 00 40 80 C0 C1 80 00 47 ED20: 8C 68 8C DB 67 9B 68 9B 50 8C 63 8C 7F 01 51 07 88 29 84 80 C4 80 57 71 07 88 14 ED A5 AD AF AC ED40: ED A5 AD A9 A8 F2 AF AC AF A3 71 08 88 AE A5 AC 68 83 08 68 9D 08 71 07 88 60 76 B4 AF AE 76 8D ED60: 76 8B 51 07 88 19 B8 A4 AE B2 F2 B3 B5 F3 A2 A1 EE A7 B3 E4 AE B2 EB A5 A5 B0 51 07 88 39 81 C1 21
ED80: 4F 7F 0F 2F 00 51 06 88 29 C2 0C 82 57 8C 6A 8C 42 AE A5 A8 B4 60 AE A5 A8 B4 4F 7E 1E 35 8C 27 EDA0: 51 07 88 09 8B FE E4 AF AD F2 AF E4 AE A1 DC DE 9C DD 9C DE DD 9E C3 DD CF CA CD CB 00 47 9D AD EDC0: A5 AD AF AC 76 9D AD A5 AD A9 A8 E6 A6 AF 60 8C 20 AF B4 B5 A1 F2 AC A3 F2 A3 B3 60 8C 20 AC A5 EDE0: A4 EE B5 B2 60 AE B5 B2 F4 B3 A9 AC 60 8C 20 B4 B3 A9 AC 7A 7E 9A 22 20 00 60 03 BF 60 03 BF 1F EE00: 20 B1 E7 E8 E8 B5 4F 85 DA B5 77 85 DB B4 4E 98 D5 76 B0 09 B1 DA 20 C9 E3 C8 4C 0F EE A9 FF 85 EE20: D5 60 E8 A9 00 95 78 95 A0 B5 77 38 F5 4F 95 50 4C 23 E8 FF 20 15 E7 A5 CF D0 28 A5 CE 60 20 34 EE40: EE A4 C8 C9 30 B0 21 C0 28 B0 1D 60 EA EA 20 34 EE 60 EA 8A A2 01 B4 CE 94 4C B4 48 94 CA CA F0 EE60: F5 AA 60 A0 77 4C E0 E3 A0 7B D0 F9 20 54 E2 A5 DA D0 07 A5 DB D0 03 4C 7E E7 06 CE 26 CF 26 E6 EE80: 26 E7 A5 E6 C5 DA A5 E7 E5 DB 90 0A 85 E7 A5 E6 E5 DA 85 E6 E6 CE 88 D0 E1 60 FF FF FF FF FF FF EEA0: 20 15 E7 6C CE 00 A5 4C D0 02 C6 4D C6 4C A5 48 D0 02 C6 49 C6 48 A0 00 B1 4C 91 48 A5 CA C5 4C EEC0: A5 CB E5 4D 90 E0 4C 53 EE C9 28 B0 9B A8 A5 C8 60 EA EA 98 AA A0 6E 20 C4 E3 8A A8 20 C4 E3 A0 EEE0: 72 4C C4 E3 20 15 E7 06 CE 26 CF 30 FA B0 DC D0 04 C5 CE B0 D6 60 20 15 E7 B1 CE 94 9F 4C 08 E7 EF00: 20 34 EE A5 CE 48 20 15 E7 68 91 CE 60 FF FF FF 20 6C EE A5 CE 85 E6 A5 CF 85 E7 4C 44 E2 20 E4 EF20: EE 4C 34 E1 20 E4 EE B4 78 B5 50 69 FE B0 01 88 85 DA 84 DB 18 65 CE 95 50 98 65 CF 95 78 A0 00 EF40: B5 50 D1 DA C8 B5 78 F1 DA B0 80 4C 23 E8 20 15 E7 A5 4E 20 08 E7 A5 4F D0 04 C5 4E 69 00 29 7F EF60: 85 4F 95 A0 A0 11 A5 4F 0A 18 69 40 0A 26 4E 26 4F 88 D0 F2 A5 CE 20 08 E7 A5 CF 95 A0 4C 7A E2 EF80: 20 15 E7 A4 CE C4 4C A5 CF E5 4D 90 1F 84 48 A5 CF 85 49 4C B6 EE 20 15 E7 A4 CE C4 CA A5 CF E5 EFA0: CB B0 09 84 4A A5 CF 85 4B 4C B7 E5 4C CB EE EA EA EA EA 20 C9 EF 20 71 E1 4C BF EF 20 03 EE A9 EFC0: FF 85 C8 A9 74 8D 00 02 60 20 36 E7 E8 20 36 E7 B5 50 60 A9 00 85 4A 85 4C A9 08 85 4B A9 10 85 EFE0: 4D 4C AD E5 D5 78 D0 01 18 4C 02 E1 20 B7 E5 4C 36 E8 20 B7 E5 4C 5B E8 E0 80 D0 01 88 4C 0C E0 -RAM MONITOR (RAM 의 $7F00~$7FFF 에 WOZMON 를 복제) HEX LIST 7F00: D8 58 A0 7F 8C 12 D0 A9 A7 8D 11 D0 8D 13 D0 C9 DF F0 13 C9 9B F0 03 C8 10 0F A9 DC 20 EF 7F A9 7F20: 8D 20 EF 7F A0 01 88 30 F6 AD 11 D0 10 FB AD 10 D0 99 00 02 20 EF 7F C9 8D D0 D4 A0 FF A9 00 AA 7F40: 0A 85 2B C8 B9 00 02 C9 8D F0 D4 C9 AE 90 F4 F0 F0 C9 BA F0 EB C9 D2 F0 3B 86 28 86 29 84 2A B9 7F60: 00 02 49 B0 C9 0A 90 06 69 88 C9 FA 90 11 0A 0A 0A 0A A2 04 0A 26 28 26 29 CA D0 F8 C8 D0 E0 C4 7F80: 2A F0 97 24 2B 50 10 A5 28 81 26 E6 26 D0 B5 E6 27 4C 44 7F 6C 24 00 30 2B A2 02 B5 27 95 25 95 7FA0: 23 CA D0 F7 D0 14 A9 8D 20 EF 7F A5 25 20 DC 7F A5 24 20 DC 7F A9 BA 20 EF 7F A9 A0 20 EF 7F A1 7FC0: 24 20 DC 7F 86 2B A5 24 C5 28 A5 25 E5 29 B0 C1 E6 24 D0 02 E6 25 A5 24 29 07 10 C8 48 4A 4A 4A 7FE0: 4A 20 E5 7F 68 29 0F 09 B0 C9 BA 90 02 69 06 2C 12 D0 30 FB 8D 12 D0 60 00 00 00 0F 00 7F 00 00 22
부록 2 : APPLE-1 Basic Manual List Run : 프로그램의 전체 구문을 보기 위해 사용합니다. : 작성된 프로그램을 실행시킬 때 사용합니다 프로그램 실행을 중단시킬 때는 아무 키나 누르면 됩니다. 이 때 화면에는 STOPPED AT X 라고 표시되는데 이 떄 X는 프로그램의 Line Number 입니다 주의 : Basic 프로그램의 중단은 항상 프로그램의 Line 종료후에만 가능합니다. 예를 들어 10 FOR I=1 TO 10 STP 0 : NEXT I 인 구문의 경우 STEP 이 0 이고 NEXT I 가 있어 해당 Line 의 구문이 종료될 수 없습니다. 따라서 이 경우 프로그램을 중단 시킬 수 없습니다. 이런 경우 적당히 중단이 가능하도록 프로그램을 작성해야 합니다. 약어 expr : 수식 표현 (expression) var : numeric, array, string 등의 이름 val : -32767 에서 32767 사이의 수 수의 범위 -32767 에서 32767 사이의 정수로만 표현됩니다. 만약 어떤 값이나 수식의 결과가 상기 범위밖의 결과가 나오면 >32767 이라는 에러메시지가 표시됩니다. 변수 Numeric simple variable letter 혹은 A, N, letter+숫자 A1, T6 Numeric array variable letter 혹은 N, T letter+숫자 B1, T4 Character string variable letter+$ A$, N$ 수식의 표현 수식(expr) 은 수, 변수, 함수와 계산자 등으로 구성되며 이는 계산에 의해 한 개의 값으로 표현 되어 질 수 있습니다. 가장 간단한 expr은 수입니다. 23
Operater (연산자 및 노리, 비교를 나타내는 관련자) -expr expr * (-1) NOT expr expr 이 0이면 값은 1, expr 이 0이 아니면 값이 0 expr * expr 곱하기 expr / expr 나누기 expr + expr 더하기 expr expr 빼기 expr = expr expr = expr 일 때 1 expr > expr expr > expr 일 때 1 expr < expr expr < expr 일 때 1 expr >= expr expr >= expr 일 때 1 expr <= expr expr <= expr 일 때 1 expr <> expr expr <> expr 일 때 1 expr # expr expr <> expr 일 때 1 expr AND expr 두 expr 중 하나라도 0이 아닐 떄 1 expr OR expr 두 expr 가 모두 0이 아닐 떄 1 expr MOD expr 앞의 expr 을 뒤의 expr 로 나우었을 경우 나머지 함수 ABS(expr) expr 의 절대값을 취함 SGN(expr) expr 의 부호. -1, 0, 1 PEEK(expr) expr 과 같은 address 의 메모리 위치에 있는 10진수 값 RND(expr) expr 이 양수이면 0과 expr-1 사이의 랜덤의 정수 expr 이 음수이면 0과 expr+1 사이의 랜덤의 정수 LEN(var$) var$의 변수에 할당되어 있는 문자의 갯수를 취합니다 Array Array 는 공통된 변수이름을 갖는 일련의 변수집단입니다. 이 어레이의 각 변수는 이름뒤에 붙는 괄호안의 숫자로 인식됩니다. 어레이 이름이 AS 이면 어레이는 AS(1), AS(2),, AS(12) 등으로 표시됩니다. 또한 AS(X) 등으로 표시할 수 있습니다. AS(0) 이나 AS)-8) 등은 사용할 수 없으며 RANGE ERR 로 에러메세지를 표시합니다. 어레이의 선언은 DIM 구문을 사용합니다. Srtings 24
String은 문자, 숫자, 인용부호를 제외한 특수문자 등을 포함할 수 있는 일련의 문자열이다. Constant String 은 인용부호 안에 사용한다. 이 문자형식의 String은 주로 PRINTsk INPUT 구문 에서 사용합니다 예) 100 PRINT THIS IS A STRING LITERAL 200 INPUT X=, X PRINT 구문에서 인용부호는 화면에 표시되지 않습니다 AppleBasic에서 STRING 기능은 다음과 같은 원칙에 따릅니다 1) String 변수이름 : LETTER$, (Z$) 2) String 의 최대길이는 DIM 구문에 의해 정의됩니다. DIM A$(20) : 문자열의 길이가 20자라는 의미이며 이 길이는 1에서 255내의 값을 갖어 야 한다. 만약 이 범위를 벗어나면 RANGE ERR 메시지가 표시됩니다 3) DIM 구문에서 길이가 정의되지 않으면 길이는 0 이 됩니다 4) String 은 최대길이와 같거나 적은 수의 문자를 포함합니다 이 최대길이를 초과하는 구문을 사용하면 STR OVFL ERR 메시지가 표시됩니다. SUBSTRINGS String 변수를 사용하는 프로그램구문에서 subscript를 사용해서 string의 일부 부분 (SUBSTRING)을 사용할 수 있습니다. Subscript 를 사용하지 않으면 String 전체를 사용하게 되고 A$(2,5) 처럼 subscript 를 사용하 면 String 의 일부를 참조하게 됩니다. A$(I,J) 역시 사용 가능하며 다른 구문에서 I, J 를 참조하여 사용하게 됩니다. 예시) A$= ABCDEFG PRINT A$ : ABCDEFG PRINT A$(5) : EFG PRINT A$(2,6) : BCDEF PRINT A$(2,2) : B I=4: J=5 PRINT A$(I,J) : EF DESTRINATION STRING DESTRINATION STRING 은 다른 (source) STRING 에 복사되는 STRING 변수입니다. 예를 들어 A$(6)=B$ 라는 구문을 볼 떄 25
= 의 왼쪽에 있는 A$(6) 을 DESTRINATION STRING 이라 하고 = 의 오른쪽에 있는 B$ 을 SOURCE STRING 이라 합니다. A$=B$ A$(5)=B$ A$(2,5)=B$ A$(5)=B$(3,8) A$ 전체가 B$에 복사됩니다. A$의 5번째 문자부터 시작해서 B$에 복사됩니다 DESTINATION STRING에서 두개의 SUBSCRIPTDMS 사용이 불가합니다 SOURCE STRING 에서는 SUBSCRIPT의 제한이 없습니다. LEN(LENGTH) FUCTION LEN 함수는 STRING 변수에 할당되어 있는 문자의 갯수에 해당하는 수를 결과로 리턴합니다. 이 LEN Function은 string 의 길이를 서로 연결시키고자 할 경우 사용합니다 예시 LEN(A$) A$=(LEN(b$)+1) IF A$(3,7)=B$(4,8) THEN. Basic Instruction Basic에는 두 가지의 instruction 이 있다. Command 와 Statement 입니다. Command 는 return 을 key in 하면 바로 실행되며 프로그램 line number 를 가지지 않으며 프로그램의 일부가 아닙니다 Statement 는 프로그램의 일부로서 line number 를 가지며 프로그램의 실행중에 실행됩니다. 여러가지 Basic Instruction 은 command 와 statement 두 가지 기능으로 모두 동작합니다. 예시) 10 PRINT A, B : 프로그램의 일부로서 프로그램 실행중에 LINE NUMBER 10에서 A, B 의 결과를 화면에 출력합니다 PRINT A,B : RETURN 하는 순간 즉시 현재의 A,B의 값을 화면에 출력합니다 Command Command 는 프로그램의 시작, 실행, 수정, 검토 하기 위해 사용하게 됩니다. 26
AUTO val1, val2 프로그램의 line number 를 자동으로 부여합니다. val1 = 시작 linr number 값. Val2 = line number 의 증가 간격. CLR 모든 변수의 값을 0 로 초기화합니다. DEL val1, val2 line number val1 에서 line number val2 까지의 프로그램을 삭제합니다 val1 만 사용하는 경우, 해당하는 line 만 삭제됩니다. LIST val1, val2 line number val1 에서 line number val2 까지의 프로그램을 표시합니다. val1 만 사용하는 경우, 해당하는 line 만 표시됩니다. val1 val2 가 없을 경우 전체 프로그램을 목록을 표시합니다. RUN val1 CLR 을 실행한 후 line number val1 부터 프로그램을 실행합니다 val1 을 생략하면 프로그램은 가장 낮은 번호 에서 시작합니다. SCR 프로그램 전체를 삭제합니다 HIMEM = (expr) 십진수로, 사용자 프로그램에 대한 메모리 경계의 고점을 설정합니다. 초기화하면 4096 이 됩니다. 이 Command 를 사용하면 현재의 프로그램이 깨집니다 LOMEM = (expr) 십진수로, 사용자 프로그램에 대한 메모리 경계의 저점를 설정합니다. 초기화하면 2,048 이 됩니다. 이 Command 를 사용하면 현재의 프로그램이 깨집니다 Statement Basic 에서 입력 라인에 하나 이상의 구문을 작성할 경우 각 문장은 콜론 ( : ) 으로 구분해야 합니다 왼쪽에 C 라고 표시된 Statement 는 Command 로도 사용 가능합니다 C LET var=expr 할당 연산이며 LET 은 생략이 가능합니다. 10 A=10 20 B=30 27
INPUT I / O 장치에서 메모리로 데이터를 입력합니다. 문자열 입력은 캐리지 리턴으로 구분합니다. "문자열" 인용부호 안에 있는 문자열을 사용합니다 INPUT X, Y, Z(3) INPUT "TEST",A INPUT "Y or N?",A$ C PRINT 현재 커서 위치에 변수 var 나 문자열 변수 string 출력합니다. 10 PRINT Ll 20 PRINT Li, X2 30 PRINT "AMT=";DX 40 PRINT A$;B$; 50 PRINT 60 PRINT "HELLO" 70 PRINT 2+3 C TAB(EXPR) expr 만큼의 space 를 출력합니다. 따라서 커서가 그 만큼 오른쪽으로 이동합니다 10 A=20 20 PRINT A 30 TAB(10) 40 PRINT A 50 END RUN : 결과 : 20 20 > FOR var1 TO var2 STEP var3 ( FOR 초기값 TO 최종값 STEP 증가간격) 10 FOR A=0 TO 10 STEP 1 20 PRINT A 30 NEXT A 40 END RUN -- 결과 0 1... 28
9 10 > 여기서 STEP 1 이 없으면 1 씩 증가하며 NEXT 가 없으면 1 번만 실행합니다. NEXT FOR 문에서 끝값 까지 루프 실행 합니다. 100 NEXT A 110 NEXT A, B C IF(EXPR) THEN expr 이 사실이면 다음 구문을 실행합니다. 100 IF A>B THEN PRINT A 110 IF A=0 THEN GOSUB 200 C GOTO expr line number expr 로 즉각적으로 이동합니다. 100 GOTO 50 110 GOT0 A 120 GOTO (A/B)+5 GOSUB expr RETURN line number expr 으로 이동하여 실행하다 RETURN 을 만나면 이전 위치로 돌아와 다음을 실행합니다 100 PRINT A 110 RETURN 200 PRINT B 210 GOSUB 100 220 GOSUB X C ` DIM var1(expr1), var2(expr2),., varn(exprn), 배열 변수를 위한 메모리를 할당합니다 10 DIM A(10), B(15),. 20 DIM B$(20) C REM text 프로그램의 실행에 영향을 주지 않는 line 입니다. Text 등으로 프로그램 이름, 내용이나 작성자등을 comment 를 달아 놓는 기능입니다. 10 REM DASH 20 PRINT A END 프로그램 중지하거나 종료시킵니다.. 29
">" 프롬프트를 화면에 표시 C POKE expr1, expr2 expr1 과 같은 메모리 위치에 expr2 를 저장합니다. 이 때 expr2 는 십진수로 0 에서 255 사이의 값이어야 합니다. 10 POKE 4,55 20 POKE -2048,55 (-2048 = D000(HEX)) C CALL expr expr (십진수) 에 해당하는 메모리 위치로 이동하여 프로그램을 실행합니다. 주로 별도의 어샘블리 프로그램과의 연결동작시 사용하며 GOSUB 과 마찬가지로 RETURN 을 만나면 이전 위치로 돌아가 다음 명령을 실행합니다. 10 CALL 60 20 CALL A 30