Retro Game & PC/매뉴얼 팁 작업

Apple2 사랑의 별점 데이터 복구 완료 (베이식 코드 버전)

smores 2023. 11. 22. 02:39

역시 네이버 카페에 먼저 글을 등록해서 그냥 복붙으로 마무리한다.

 

https://cafe.naver.com/appleii/19794

 

 

 

===============

 

오랫만에 애플2 베이식 코드도 분석하고 랜덤파일 억세스도 공부하고 재밌었습니다. LeeSW 님 덕분에 데이터도 깔끔하게 정리할 수 있었고요.

 

앞의 글에서도 언급했었지만, 사랑의 별점은 크게 두가지 버전이 있었습니다. 하나는 아마도 초기 개발 버전인 듯, 베이식 코드가 다 노출된 버전입니다. 그리고 그걸 이용해서 Camel Soft 라는 곳에서 시작시 로고 그림도 나오게 하고, 컴파일한 바이너리로 실행 프로그램을 숨긴 듯 한 버전이 있습니다. 메인 메뉴에서의 차이는 프린터로 보낼지 묻는 질문 다음 문항에서 베이식 코드 버전은 최종 수정을 할지 한번 더 묻는 질문이고, Camel Soft 버전은 진행할지 묻는 질문입니다. 그 외에 데이터는 동일하게 사용한 것 같은데, 데이터 파일명이 살짝 다릅니다. 베이식 버전은 D-11 식으로 되어 있는데 Camel Soft 버전은 DATA-11 식으로 이름을 바꿔놓았더군요.

베이식 코드 버전은 뒷면은 1면에서 깨진 데이터가 엄청 많습니다. 파일 사이즈가 아예 0으로 되어 있거나, 일부 레코드만 살아있는 경우가 있고요. 잘은 모르겠지만 개발 과정에서 파일 하나씩 넣고 빼고 하면서 테스트하다가 최종 결정은 24개 중 12개는 앞면, 12개는 뒷면에 넣으려 했던 것 같습니다. 아니, 같은 디스켓 두개 카피하고 적당히 나누어 넣으려 한 것 같은데 잘못해서 0바이트 빈 파일을 남기곤 수정하지 않고 뒷면을 신경쓰는 식으로 하다가 혼선이 있었던 모양입니다.

그래서 전 일단 필요없는 파일들을 다 지우고 데이터를 채워 넣기 시작했습니다. 사용한 코드는 LeeSW님 도움으로 완성한 월별, 성별 데이터 파일을 읽어서 각각에 대해 데이터를 채워 넣는 베이식 코드로 전환해서 베이식 프로그램 파일을 24개 준비해 뒀고요. AppleWin에서 A 로 일단 적당한 도스 디스켓으로 부팅 후, B 에 필요한 별점 디스크를 넣고 CATALOG,D2 로 디스크 엑세스를 전환한 후, AppleWin에서 최고 속도 에뮬레이션 모드로 셋팅해 놓은 상태에서 베이식 코드를 Shift+Insert 로 다 붙여 넣은 후 RUN 한번 하면 파일이 생성되도록 하는 것입니다. 그런데 원래의 프로그램은 앞면에 12개 (D-11 ~ D~62), 뒷면 나머지 12개 데이터가 있는 것을 상정한 베이식 코드가 작성이 되어 있더라고요. 전 아무리 해도 앞에 8개 (D11 ~ D42) 까지밖에 못 넣겠던데 말이죠. 그래서 Camel Soft 버전을 자세히 보니 거기는 이미 그렇게 나누어 넣었던 것 같았습니다.

저도 그래서 도스 부팅 블랭크 디스크 이미지를 하나 만들어서 뒷면용으로 사용하기로 하고 그곳에 남은 16개를 다 넣어보니 깔끔히 들어가고 잘 작동하더라고요. 베이식 코드에서도 보니 따로 뒷면일때 코드를 다시 읽어들이거나 하는 구조가 아님을 확인했고요. 대신 앞뒤 갯수가 달라서 그걸 판정하는 코드인 490번 문장에서 VAL (C$) < 7 을 5로 고쳐주고, 에러시 뒷면을 넣으라는 메시지가 나오는 곳에서 에러 번호와 문장번호를 보여주는 코드는 주석 처리해서 그냥 뒤집으란 메시지만 나오는 것으로 마무리했습니다.

 
 

수정된 베이식 코드입니다. 파일명은 디스크 1면에 들어 있는 STAR 입니다만, 전 원본과 혼란을 피해서 STAR_2.BAS 로 작업하고 디스크 1면에 저장할 때만 SAVE STAR 로 했습니다.

다음은 LeeSW 님 덕에 완성한 정리된 데이터 파일들을 압축해서 업로드해 둡니다. 파일은 노트패드에서 쉽게 볼 수 있는 UTF-8 코드 포맷의 텍스트 파일입니다. UTF-8 로 통일한 이유는 이걸 읽어서 3327 키 입력 순의 데이터로 바꾸기 위한 파이썬 코드에서 한글 한 글자를 자모로 나누는 라이브러리에서 UTF-8 기준으로 다 돌아가기에 그렇게 했고요.

 

 

다음은 이 데이터를 3327 형식의 텍스트로 디스켓에 심어주도록 베이식 코드를 만들어주는 파이썬 프로그램입니다.

 

cvt_3327.py
0.00MB

파이썬을 조금 아시는 분들은 이런 작업이 이렇게 간단하게 되는 거였는지 놀라실겁니다. 파이썬의 위력입니다. ^^ 마침 UTF-8 포맷의 한글을 글자별로 자모로 다 분리해 주는 라이브러리인 jamo 라는 것이 있더라고요!

24개 데이터 파일로 24개 애플 베이식 코드를 한방에 다 만들어줍니다. ^^ 코드 중간 130번째 라인데 한 줄의 길이 (3327용으로 변환된 텍스트의 길이)를 프린트해 주는 문장이 있습니다. 이건 제가 모든 줄들을 다 체크해서 제일 긴 줄도 혹시 바이트수가 충분이 적으면 기존의 150바이트짜리 레코드 길이의 랜덤 억세스 파일 대신 좀 줄인 것으로 해서 디스크 1면에 6세트 다 우겨 넣을수 있으려나 체크해 보려는 것이었습니다.

 

다음은 그렇게 해서 준비된 베이식 코드 파일들입니다. 대충 이런 식으로 완성형 한글이 3327 로 바뀌어 있음을 쉽게 아실겁니다.

대충 돌려봤을때 아직은 문제는 없는 듯 싶었지만 혹시라도 문제점이 발견되면 알려주시길 바랍니다. 사실 이걸 가지고 놀 사람이 얼마나 될까 싶긴 합니다만... ㅎㅎ

이 정도로 사랑의 별점 데이터 복원 프로젝트는 마무리 하도록 하겠습니다. (기회되면 Camel Soft 버전도 수정되는지 확인해 보겠습니다)