어렸을땐 이해를 못해서 한번도 못써먹어보던 함수.
USR(v) : 값은 $9D-$A3 에 걸친 floating point accumulator 에 전달되고, $0A-$0C 에 원하는 번지로의 점프를 하게끔 셋팅하면 그곳으로 간다. $0A 는 4C JMP, 그 이후 두 바이트가 어드레스 하위, 상위 순서. 예를 들어.
* 0A:4C 00 30
으로 $0300 번지로 점프를 하게끔 된다.
* 0300:60 RTS
로 Applesoft Basic 으로 되돌아옴. 돌아올때 앞서 값을 보낸 8바이트 ($9D-$A3) 의 값을 다시 읽어온다. 만일 기계어 코드가 뭔가 값을 되돌려주려면 그곳을 이용.
위의 사례에선 원래 넣은 값 그대로 되돌려받음.
즉,
] CALL-151
* 0A:4C 00 03 [ENTER]
* 0300:60 [ENTER]
* CTRL+C [ENTER]
] PRINT USR(8)*3
24
이런식으로 작동.
'Retro Game & PC > 정보' 카테고리의 다른 글
CP/M HEX 파일 포맷 (0) | 2024.09.10 |
---|---|
Apple2 HGR Font Tutorial (0) | 2024.09.06 |
Apple2e - 64KB or 128KB ? (0) | 2024.09.04 |
레트로 컴퓨터 easter egg (0) | 2024.09.04 |
Apple2 Integer Basic Reference (0) | 2024.08.25 |