Retro Game & PC/정보
Apple2 Basic USR()
smores
2024. 9. 4. 09:08
어렸을땐 이해를 못해서 한번도 못써먹어보던 함수.
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
이런식으로 작동.